Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Fehler 12030 beim Abruf über TNetHTTPClient (https://www.delphipraxis.net/211713-fehler-12030-beim-abruf-ueber-tnethttpclient.html)

Hobbycoder 25. Okt 2022 17:26

Fehler 12030 beim Abruf über TNetHTTPClient
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich rufe von einer Datenquelle über http JSON-daten ab. Bei einigen kleineren Statusinformation klappt das auch soweit wie erwartet.

Jetzt will ich eine JSON-Liste abrufen, die etwas länger ist. Firefox benötigt mitunter 10 Sekunden.
Ich nutze Systen.Net.HttpClientComponent.TNetHTTPClient. Dieser bricht nach ablauf des Timeouts immer mit dem Fehler 12030. Wenn die verwendete URL aber in den Browser kopiere, dann läuft das einwandfrei.
Einer eine Idee woran das liegen könnte?

Delphi-Quellcode:
function TDeviceDataThread.RequestServices(var ResponseJSON: string): Integer;
var
  httpClient: TNetHTTPClient;
  Response: IHTTPResponse;
  SS: TStringStream;
  LogText: string;
  url: string;
begin
  httpClient:=TNetHTTPClient.Create(nil);
  SS:=TStringStream.Create;
  try
    try
      httpClient.ConnectionTimeout:=600000;
      httpClient.ResponseTimeout:=600000;
      url:='http://'+FUser+':'+FPass+'@'+FIP+':'+FPort.ToString+'/api/getallservices';
      Response:=httpClient.get(url, SS);
      SS.Position:=0;
      LogText:='JSON: '+SS.DataString;
      ResponseJSON:=SS.DataString;
      Result:=Response.StatusCode;
    except
      on E: Exception do
      begin
        LogText:='Fehler getallservices: '+E.Message+' '+LogText;
        DoLog(LogText);
        Result:=403;
      end;
    end;
  finally
    httpClient.Free;
  end;
end;

itblumi 26. Okt 2022 11:45

AW: Fehler 12030 beim Abruf über TNetHTTPClient
 
Ich würde Dir empfehlen das Ganze mal mit Wireshark zu überprüfen um zu schauen wo der Fehler liegt.
So weit mir bekannt ist, trat dieser Fehler bei nicht übereinstimmenden Protokollen auf. Du könntest
die auch noch anschauen welche Protokolle dein Browser benutzt.

Union 26. Okt 2022 20:57

AW: Fehler 12030 beim Abruf über TNetHTTPClient
 
Du verwendest die Basic-Authentication in der URL. Ich weiß nicht, ob der Client diese Syntax transparent unterstützt. Hast Du mal probiert, ob das Setzen von User und Passwort über den dafür vorgesehenen AuthEvent funktioniert?

RFC-3986 (AD 2005) sagt, dass die Verwendung der Syntax mit user:pass veraltet ist und falls doch unterstützt, dass übergebene Passwort ignoriert werden soll.

Edit: Wie wird der StringStream freigegeben? Zumal der Überflüssig ist, Get gibt ein IHTTPResponse zuück, welches über IURLResponse ContentAsString unterstützt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.

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