Einzelnen Beitrag anzeigen

IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
80 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Clever Internet Suite HTTPS Problem

  Alt 24. Apr 2015, 10:12
Hi.
Ich arbeite mit Delphi7.

Ich habe die Clever Internet Suite entdeckt.
So weit gefällt mir die Suite sehr gut. Ich komme allerdings bei HTTPS nicht weiter.
Ich versuche so gut wie möglich das Problem zu schildern.

Ich erstelle ganz normal eine VCL Anwendung. Auf der Form platziere ich clHTTP1.
Ich setze die Eigenschaften
- UseTLS auf ctAutomatic
- LSFlags tfUseTLS auf Ttrue

Nun lade ich eine HTTPS Seite und bekomme mein Response. So wie es sein sollte.
zB. diese Seite https://proxy.org/cgi_proxies.shtml

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Response: TStrings;
begin
  Memo1.Lines.Clear();
  Response := TStringList.Create();
    try
      clHttp1.Get(edtUrl.Text, Response);
        if SameText('UTF-8', clHttp1.ResponseHeader.CharSet) then
           Memo1.Lines.Text := TclTranslator.TranslateFromUtf8(Response.Text)
        else
          Memo1.Lines.Assign(Response);
    finally
      Response.Free();
    end;
end

Nun zu meinem Problem.
Ich versuche es in eine Unit auszulagern und das Gsanze zur Laufzeit zu erstellen.
Hier komme mit mit den Flags nicht klar.

Hier das relevante Teil von der Unit.
Delphi-Quellcode:
unit cIHTTP_GET_POST;

interface

uses
  Windows, SysUtils, Classes, clTcpClient, clHttp, clHtmlParser,
  clHttpRequest, ShellAPI, clSspiTls;

  function clHTTP_GET(const URL: string; TimeOut: Integer): UTF8String;

implementation

uses Splitter;

function clHTTP_GET(const URL: string; TimeOut: Integer): UTF8String;
var
  Response : TStrings;
  clHttp1 : TclHttp;
begin
  Response := TStringList.Create();
  clHttp1 := TclHttp.Create(nil);
  clHttp1.TimeOut := TimeOut * 1000;
  clHttp1.UseTLS := ctAutomatic;

  clHttp1.TLSFlags := tfUseTLS; //Das ist der Fehler. Hiet müsste tfUseTLS auf True gesetzt werden.

    try
      clHttp1.Get(URL, Response);
      Result := Response.Text;
    finally
      FreeAndNil(Response);
      FreeAndNil(clHttp1);
    end;
end;

end.
Ich habe die ganze Hilfe durchstöbert und auch ordentlich gegoogelt.
Leider finde ich nichts zu dem Thema.
Es sollte später aus einem Thread heraus abgerufen werden deshalb sollte es zur Lsufzeit erstellt werden.
Meine versuche sind leider gescheitert.
Vielleicht hat Jemand ein Rat für mich.

EDIT:
Code korrigiert. Nun funktioniert es.

Geändert von IMPEGA (24. Apr 2015 um 11:40 Uhr)
  Mit Zitat antworten Zitat