Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Shopware REST API (https://www.delphipraxis.net/211099-shopware-rest-api.html)

BerTa 28. Jul 2022 09:26

Shopware REST API
 
Hallo,
ich habe plötzlich folgendes Problem mit der REST API von Shopware (Version 5). Vor kurzem lief noch alles und plötzlich erhalte ich die Fehlermeldung "Connection Closed Gracefully", wenn ich Daten abrufen will. Daten werden per idHttp.Get mit der BasicAuthentifikation abgerufen:
Code:
      IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
      IdHttp1.Request.BasicAuthentication := true;
      IdHttp1.Request.Username := ConfigRec.web_user;
      IdHttp1.Request.Password := ConfigRec.web_pw;

      lsResponse := IdHTTP1.Get("https://www.testshop.de/api/articles?limit=100",enUTF8);
Ich kann mit der Fehlermeldung nicht viel anfangen. Hat irgendjemand einen Tipp, warum der Server die Verbindung einfach wieder schliesst?

Schöne Grüße

Neutral General 28. Jul 2022 09:41

AW: Shopware REST API
 
Ist jetzt keine direkte (hilfreiche) Antwort, aber hast du mal testweise probiert ob es mit TRESTClient funktioniert?
Mit dem kannst du fast nix verkehrt machen.

Edit: Okay das hat sich erledigt, wenn du tatsächlich noch mit Delphi 7 entwickelst.

mjustin 28. Jul 2022 10:20

AW: Shopware REST API
 
Zitat:

Zitat von BerTa (Beitrag 1509406)
"Connection Closed Gracefully"


Die Gegenseite hat die Verbindung sauber getrennt. Eventuell hat der Server auch weitere Informationen in der Response mitgeteilt.

Einfacher Weg dies zu prüfen: den Request per Web-Client (Browser) senden oder per curl auf der Kommandozeile.

Um die Response auch mit Indy anzuzeigen, gibt es mehrere Wege. Aber erst einmal ausprobieren, ob ein Browser mehr Informationen ausgibt.

BerTa 28. Jul 2022 10:44

AW: Shopware REST API
 
Wenn ich den Befehl über einen Browser absetze, erhalte ich die gewünschte Rückmeldung.
Unter gleichen Umständen hat es unter Delphi vor ca. 2 Monaten auch noch funktioniert. Habe am Programm nichts geändert.
Die SSL Optionen stehen auch schon auf TLS1.2.

Im Response erhalte ich keine Informationen, da der Befehl ja eine Exception hervorruft.

Edelfix 28. Jul 2022 13:59

AW: Shopware REST API
 
Im Browser kann man mit der Taste "F12" ==> "Netzwerkanalyse" ==> "Sicherheit" (rechts unten im FireFox) die TLS Version sehen. Eventuell wird eine andere benötigt als du einsetzt.

BerTa 28. Jul 2022 14:47

AW: Shopware REST API
 
Zitat:

Zitat von Edelfix (Beitrag 1509424)
Im Browser kann man mit der Taste "F12" ==> "Netzwerkanalyse" ==> "Sicherheit" (rechts unten im FireFox) die TLS Version sehen. Eventuell wird eine andere benötigt als du einsetzt.

Guter Hinweis. Hier wird wohl TLSv1.3 verwendet.:?

Welche Möglichkeiten gibt es denn hier mit oder ohne Indy.

mjustin 28. Jul 2022 14:51

AW: Shopware REST API
 
Zitat:

Zitat von BerTa (Beitrag 1509411)
Unter gleichen Umständen hat es unter Delphi vor ca. 2 Monaten auch noch funktioniert. Habe am Programm nichts geändert.

Checkliste:
* User-Agent im Request wird explizit gesetzt? (einige Server misstrauen Indy, und lehnen dann die Verbindung ab)
* auf dem Rechner ist nur eine Version der OpenSSL DLLs vorhanden?
* Firewallregeln geändert?

DeddyH 28. Jul 2022 14:51

AW: Shopware REST API
 
Ich selbst habe es nicht ausprobiert, aber die SecureBridge soll dem Vernehmen nach durchaus brauchbar sein.

mjustin 28. Jul 2022 18:11

AW: Shopware REST API
 
Zitat:

Zitat von BerTa (Beitrag 1509432)

Guter Hinweis. Hier wird wohl TLSv1.3 verwendet.:?

Das zeigt nur, dass sich Client und Server auf TLS 1.3 geeinigt haben.

Es sagt nicht, welche TLS Versionen serverseitig angeboten werden.

Online-Scanner wie SSL Labs zeigen an, welche Level noch erlaubt sind. Wenn TLS 1.2 erlaubt ist, sollte es mit Indy auch einen erfolgreichen Verbindungsaufbau geben.

https://www.ssllabs.com/ssltest/

BerTa 29. Jul 2022 07:41

AW: Shopware REST API
 
Die Analyse hat bzgl. TLS folgendes ergeben:

Zitat:

TLS 1.3 Yes
TLS 1.2 Yes* support observed with client that does not support SNI
Habe gestern mal einen Abruf mit SecureBridge versucht, hier besteht die Möglichkeit auch TLS 1.3 zu verwenden. Der Abruf hat mit TLS 1.3 dann auch geklappt. Hab es noch nicht ganz raus, wie ich mit der Komponente umzugehen habe, aber grundsätzlich funktionert der Abruf. Ich habe jetzt nur noch das Problem, wenn ich einen 2ten Abruf starte. Request muss wohl irgendwie geschlossen werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz