1. Flenov

    Flenov Member

    Joined:
    22 Nov 2008
    Messages:
    20
    Likes Received:
    17
    Reputations:
    0
    deleted
     
    #1 Flenov, 7 Jun 2009
    Last edited: 28 Jan 2015
    1 person likes this.
  2. NightJack

    NightJack Elder - Старейшина

    Joined:
    28 Feb 2007
    Messages:
    16
    Likes Received:
    30
    Reputations:
    26
    А если попробывать через "TIdHTTP"?
     
  3. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    там шифрование, и его гемморно реализовывать. Проще заюзать готовые либы для работы с ним. Тогда от обычного http оно отличаться не будет.
     
  4. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Копай в сторону winsock + openssl, доки по ssl найдешь на _http://www.openssl.org
     
  5. Martyr

    Martyr Elder - Старейшина

    Joined:
    29 Jun 2008
    Messages:
    33
    Likes Received:
    7
    Reputations:
    0
    Если действительно хочешь разобраться в теме и у тебя есть время и желание то вот:
    _http://tools.ietf.org/html/draft-ietf-tls-ssl-version3-00
    _http://en.wikipedia.org/wiki/Secure_Sockets_Layer
    _http://tools.ietf.org/html/rfc2818
    А если хочешь по-быстрому - то воспользуйся готовыми решениями:
    _http://www.brothersoft.com/ip-works-ssl-delphi-edition-download-132185.html
    _http://www.devart.com/sbridge/?gclid=CKr_6N6E-JoCFdMWzAod_Cysdw
     
    1 person likes this.
  6. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    есть особое мнение, что человек, способный с нуля написать ssl библиотеку, не будет задавать подобных вопросов. Уверен, что тебе нужен именно HTTPS запрос, а не, например, запрос к HTTPS-прокси?
     
    #6 bons, 7 Jun 2009
    Last edited: 7 Jun 2009
  7. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Работа с ssl сокетами ничем не отличается от работы с обычными, смотри примеры на openssl.org
     
  8. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    Flenov, юзай библиотеки Chilkat Delphi ActiveX Components, очень просто всё реализуется и examples есть разные.)http://chilkatsoft.com
     
    1 person likes this.
  9. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    Вот тут компоненты для HTTP http://www.chilkatsoft.com/download/HttpActiveX.msi

    Вот экзампл, взятый с их сайта
    Code:
    uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, StdCtrls,
        CHILKATHTTPLib_TLB,
        OleCtrls;
    
    ...
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    http: TChilkatHttp;
    success: Integer;
    html: String;
    
    begin
    http := TChilkatHttp.Create(Self);
    
    //  Any string unlocks the component for the 1st 30-days.
    success := http.UnlockComponent('Anything for 30-day trial');
    if (success <> 1) then
      begin
        ShowMessage(http.LastErrorText);
    
      end;
    
    //  Send the HTTP GET and return the content in a string.
    
    html := http.QuickGetStr('https://www.paypal.com/');
    
    Memo1.Lines.Add(html);
    end;
    
     
  10. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    это ActiveX библа! Ты её выбираешь в Import ActiveX Control и delphi сам компилит библу и устанавливает компоненты из неё. -> Любая версия
     
  11. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    Вот типа тож пример от туда, но тут с кукисами как-то запарно реализовано, если они конешн тебе нужны будут вообще..

    Code:
    uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, StdCtrls,
        CHILKATHTTPLib_TLB,
        OleCtrls;
    
    ...
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    req: TChilkatHttpRequest;
    http: TChilkatHttp;
    success: Integer;
    html: String;
    domain: String;
    port: Integer;
    ssl: Integer;
    resp: IChilkatHttpResponse;
    
    begin
    req := TChilkatHttpRequest.Create(Self);
    http := TChilkatHttp.Create(Self);
    
    //  Any string unlocks the component for the 1st 30-days.
    success := http.UnlockComponent('Anything for 30-day trial');
    if (success <> 1) then
      begin
        ShowMessage(http.LastErrorText);
    
      end;
    
    //  Before doing the POST, do a simple GET for the purpose of obtaining a Cookie.
    //  The Cookie contains a session-id and a session-id-time, and these values must
    //  be current.
    
    //  The CookieDir may be set to "memory" to keep an in-memory cache of cookies.
    //  Alternatively, you may set it to a directory, such as "c:/temp/cookies".  If you do that,
    //  you can visually browse the cookies which will appear as XML files in the CookieDir.
    http.CookieDir := 'memory';
    
    //  Tell the HTTP component to save any cookies received.  Also tell the component to
    //  re-send cookies with subsequent GETs and POSTs.
    http.SendCookies := 1;
    http.SaveCookies := 1;
    
    //  Do a GET to retrieve our Cookie...
    
    html := http.QuickGetStr('https://secure.amazon.com/exec/panama/seller-admin/manual-reports/get-report-status');
    
    //  Build an HTTP POST Request:
    req.UsePost();
    req.Path := '/exec/panama/seller-admin/manual-reports/get-report-status';
    
    //  Setting your login/password causes Chilkat to automatically add the Authorization header:
    http.Login := 'YourLoginEmailAddress';
    http.Password := 'YourPassword';
    
    //  NOTE: Do not explicitly add the Cookie header.  It is added automatically by Chilkat HTTP.
    req.AddHeader('Content-Type','text/xml');
    
    req.AddHeader('NumberofReports','2');
    req.AddHeader('ReportName','OpenListingsLite');
    
    //  Send the HTTP POST and get the response.  Note: This is a blocking call.
    //  The method does not return until the full HTTP response is received.
    
    domain := 'secure.amazon.com';
    port := 443;
    ssl := 1;
    
    resp := http.SynchronousRequest(domain,port,ssl,req.DefaultInterface);
    if (resp = nil ) then
      begin
        Memo1.Lines.Add(http.LastErrorText);
      end
    else
      begin
        //  Display the XML returned.
        Memo1.Lines.Add(resp.BodyStr);
      end;
    end;
    
     
  12. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Извеняюсь за мат, но вы ебанулись. ну нахера копаться в SSL и компонентах если всё уже давно реализовано в стандартной либе wininet заголовочные файлы которой есть почти в любом языке. при то/V\, что это WinApi.
    Если юзать сокеты, то полюбому придется таскать SSL либы которые весять ппц сколько.
     
    #12 slesh, 9 Jun 2009
    Last edited: 10 Jun 2009
  13. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    для тех кто в танке вот пример простой на дельфе/ Даже поддержка прокси есть.

    Кусок кривоватый, писался давно и наспех. Но работает.
    Code:
    uses wininet;
    
    function SendPOST(data,proxy_ip:string;proxy_port:word):string;
    var
     h_open:HINTERNET;
     h_connect:HINTERNET;
     h_request:HINTERNET;
     s,outs:string;
     l:integer;
     mas:array of char;
    begin
     result:='- InternetOpen';
     if proxy_ip<>'' then
     h_open:=InternetOpen('Mozilla/5.0 (compatible; MSIE 6.0; SV1; MRA 4.8 (build 01705))',INTERNET_OPEN_TYPE_PROXY,Pansichar(proxy_ip+':'+inttostr(proxy_port)),nil,0)
    else
    h_open:=InternetOpen('Mozilla/5.0 (compatible; MSIE 6.0; SV1; MRA 4.8 (build 01705))',INTERNET_OPEN_TYPE_DIRECT,nil,nil,0);
    if h_open=nil then exit;
    //INTERNET_OPEN_TYPE_PRECONFIG какой удобно тот и юзайть
    //INTERNET_OPEN_TYPE_DIRECT
    result:='- InternetConnect';
    h_connect:=InternetConnect(h_open,'SITE.RU',INTERNET_DEFAULT_HTTPS_PORT,nil,nil,INTERNET_SERVICE_HTTP,0,0);
    if h_connect=nil then exit;
    result:='- HttpOpenRequests';
    h_request:=HttpOpenRequest(h_connect,'POST','/имя_скрипта','HTTP/1.0','SITE.RU',nil,INTERNET_FLAG_SECURE+INTERNET_FLAG_KEEP_CONNECTION,0);
    if h_request=nil then exit;
    lstrcpy(Pansichar(mas),Pansichar(data));
    HttpSendRequest(h_request,'Content-Type: application/x-www-form-urlencoded', 47,mas,length(s));
    
    setlength(mas,1024);
    outs:='';
    repeat
    InternetReadFile(h_request,mas,1024,cardinal(l));
    s:=copy(Pchar(mas),1,l);
    outs:=outs+s;
    until l<=0;
    
    
     
    1 person likes this.
  14. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Уже писал и еще напишу что можно обычные сокеты + openssl
    Вообще не очень то и много весит, под никс при статической сборке где то + 500К.
     
  15. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 razb - когда прожка весит 20-30 кил, а к ней либа на пол метра - это вообще жесть
     
  16. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Скачиваешь либсу с openssl.org и там в архиве в папке demos есть примеры.

    Ну это же не критично, если даже посмотреть на кроссплатформенные гиганты)