HTTPS Abfrage funktioniert nicht

Alle Fragen zur Netzwerkkommunikation
Antworten
DL3AD
Beiträge: 434
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

HTTPS Abfrage funktioniert nicht

Beitrag von DL3AD »

Hallo,

eine HTTP "GET" Abfrage will nicht - hier der Code

Code: Alles auswählen

 
//LOTW Daten abfragen
procedure TForm1.BtnLoadClick(Sender: TObject);
var
   http  : THTTPSend;
   DAnsw : TStringList;
   req   : string;
   ErrMsg: string;
begin
  http:= THTTPSend.Create;
  DAnsw:= TStringList.Create;
  req:= 'https://lotw.arrl.org/lotwuser/lotwreport.adi?' +
        'login=xxxxx&password=yyyyyy&qso_query=1';//Requeststring User= xxxxx Passwd= yyyyy
  if not http.HTTPMethod('GET', req) then//War GET erfolgreich ? sonst Fehler
    begin
      ErrMsg:= '(' + IntToStr(http.ResultCode) + ')' + http.ResultString;
      Memo1.Append(ErrMsg);
    end
    else
    begin
      //DAnsw soll die Datei lotwreport.adi enthalten
      DAnsw.LoadFromStream(http.Document);
      Memo1.Append(DAnsw.Text);//Ausgabe im Memo
    end;
  http.Free;
  DAnsw.Free;
end;                 
 

Mit dem req-string direkt im Browser funktioniert es.

Was kann da faul sein ?

Gruß Frank
Zuletzt geändert von DL3AD am Di 19. Dez 2017, 17:40, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 8407
Registriert: Mo 11. Sep 2006, 19:01

Re: HTTP Abfrage funktioniert nicht

Beitrag von theo »

"https" Hast du SSL eingebunden und ist die Lib vorhanden?
z.B. uses ssl_openssl;
http://synapse.ararat.cz/doku.php/publi ... :sslplugin

DL3AD
Beiträge: 434
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: HTTP Abfrage funktioniert nicht

Beitrag von DL3AD »

... nein hatte ich nicht - habe nun ssl_openssl unter uses angegeben und die entsprechenden Dateien dem Projektordner hinzugefügt.
Da muss noch was fehlen - geht immer noch nicht - muss ich noch was mit ssl machen ?

DL3AD
Beiträge: 434
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: HTTPS Abfrage funktioniert nicht

Beitrag von DL3AD »

Hallo,

ich habe nun weiter herumprobiert - komme nicht weiter :(

Fehlt da noch was in meinem Code ?
Gibt es irgendwo ein Beispiel ?
Brauch ich noch irgenwelche Zertifikate oder sonstige Dateien ?

Gruß Frank

Benutzeravatar
theo
Beiträge: 8407
Registriert: Mo 11. Sep 2006, 19:01

Re: HTTPS Abfrage funktioniert nicht

Beitrag von theo »

Bei mir funktioniert dein Code. Bin auf Linux.
Wenn du auf Windows bist, musst du noch so eine OpenSSL DLL im Pfad haben.
http://synapse.ararat.cz/files/crypt/

sstvmaster
Beiträge: 345
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: OS: Windows 10 | Lazarus: 2.0.8 + Fixes + Trunk 32bit
CPU-Target: 32Bit
Wohnort: Dresden

Re: HTTPS Abfrage funktioniert nicht

Beitrag von sstvmaster »

oder besser noch die neusten dll's von hier:

aktuell 1.0.2n

https://indy.fulgan.com/SSL/

In meinem Fall musste ich folgendes machen:

- Win32 zip entpacken und libeay32.dll + ssleay.32.dll ins Programmverzeichnis meines Projektes kopieren.
- ssl_openssl in uses aufnehmen

Jetzt musste ich noch:
- In Lazarus -> Projekt -> Projektinspektor
- doppelklick auf laz_synapse
- Hinzufügen -> Dateien aus dem Dateisystem hinzufügen
- mit "STRG/CTRL" ssl_openssl.pas + ssl_openssl_lib.pas auswählen -> Öffnen
- Kompilieren

Fertig


73 Maik, DM4YWL
LG Maik

DL3AD
Beiträge: 434
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: HTTPS Abfrage funktioniert nicht

Beitrag von DL3AD »

Hallo theo, sstvmaster,

vielen Dank für den Tipp - nun funktioniert es - es lag an den dll's 8)

Gruß Frank
(73 Frank, DL3AD)

DL3AD
Beiträge: 434
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: HTTPS Abfrage funktioniert nicht

Beitrag von DL3AD »

... soweit funktioniert ja nun alles - aber ein kleines Problem habe ich noch.
Mit

Code: Alles auswählen

 
DAnsw.LoadFromStream(http.Document);
 

lade ich die gelieferte Datei in eine Stringlist DAnsw.
Die gelieferte Datei ist lotwreport.adi wenn alles richtig läuft.
Im Fehlerfall kommt aber nicht die Datei sondern eine Webseite welche dann in der Stringlist landet.

Wie kann ich feststellen was mit http.Document geliefert wird - d.h. den Dateinamen feststellen ?

Gruß Frank

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2284
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.8, FPC 3.0.4)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: HTTPS Abfrage funktioniert nicht

Beitrag von m.fuchs »

Hm, es gibt keine Dateinamen bei HTTP. Du wirst also das zurückgegebene Dokument auslesen müssen.
Oder vielleicht den Content-Type-Header der Antwort. Sofern der für ein korrektes Dokument etwas anderes als "text/html" ist.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

DL3AD
Beiträge: 434
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: HTTPS Abfrage funktioniert nicht

Beitrag von DL3AD »

Hallo m.fuchs,

Danke für die Antwort - ja ich habe auf einen spezifischen Inhalt geprüft - dann lasse ich das so.

Frohes Fest euch allen.

Gruß Frank

Antworten