Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Indy - socket error #10061 & Unexpected EOF (https://www.delphipraxis.net/203297-indy-socket-error-10061-unexpected-eof.html)

Minz3 3. Feb 2020 09:45

Delphi-Version: 10.1 Berlin

Indy - socket error #10061 & Unexpected EOF
 
Huhu,

ich versuche mit den Indy Komponenten auf eine API zuzugreifen.

Bei meiner Get Methode, kommt die Socket Fehlermeldung #10061 "Verbindung abgelehnt".
Bei meiner Post Methode, kommt die EOF Meldung "EOF festgestellt, da gegen das Protokoll verstößt."

Mit Postman habe ich die Requests nochmal überprüft und da gehts. Die Verbindung scheint zu stimmen und die API ist generell ansprechbar.
Ich nutze die IdHTTP und die IdSSLIOHandlerSocketOpenSSL Komponenten von Indy.

IdHTTP Settings (abseits vom Default):
ProxyPort: 8888
ProxyServer: 127.0.0.1

SSLHandler Settings (abseits vom Default):
SSLVersion: TLSv1_1
SSLHost: 'NB1819157' {Notebook Name}
SSLPort: 5001

Get Methode:
Delphi-Quellcode:
var
  ResponseStream: TFileStream;
begin
  ResponseStream := TFileStream.Create(edtDatei.Text, fmCreate);
  try
    IdHTTP.Get(edtURL.Text, ResponseStream);
    lbHTTPResponse.Caption := 'HTTP-Status: ' + IntToStr(IdHTTP.ResponseCode);
  finally
    ResponseStream.Free;
  end;
  ShowMessage('Download abgeschlossen')
end;
Post Methode:
Delphi-Quellcode:
var
  ResponseStr: string;
  Data : TStringStream;
begin
  with TIdHTTP.Create(nil) do
  try
    Request.ContentType := 'application/atom+xml';
    Data := TStringStream.Create('', CP_UTF8);
    try
      if not SystemOptionsManager[11472].AsString.IsEmpty then
      begin
        memo1.lines.Add('https://' + SystemOptionsManager[11472].AsString {'nb1819157:5001'} + '/loginIntegration?' + URLBuilder(Username, Password, Database));
        Data.WriteString(URLBuilder(Username, Password, Database));
        Request.CharSet := 'UTF-8';
        ResponseStr := Post('https://'+SystemOptionsManager[11472].AsString+'/loginIntegration?', Data);
      end
      else
      begin
        ShowMessage('Keine URL zur API angegeben.');
      end;
    finally
      Data.Free;
    end;
  finally
    Free;
  end;
end;
Hoffe es hat jemand eine Idee dazu, ich bin dankbar über jeden hilfreichen Ansatz.

Grüße!

Minz3 3. Feb 2020 10:31

AW: Indy - socket error #10061 & Unexpected EOF
 
1. Edit:
Das Get Problem scheint sich von selbst gelöst zu haben. Ich habe mit Fiddler mal geschaut, was so hin und her geschickt wird und auf einmal ging es...
Das Post Problem bleibt weiterhin.

2. Edit:
Die oben Angesprochenen Settings werden im Quellcode übrigens bei FormActivate gesetzt.
Delphi-Quellcode:
  IdHTTP.ProxyParams.ProxyPort             := PROXYPORT;
  IdHTTP.ProxyParams.ProxyServer           := PROXYSERVER;
  IdSSLIOHandlerSocketOpenSSL1.Host        := SSLHOST;
  IdSSLIOHandlerSocketOpenSSL1.Port        := SSLPORT;
Die Konstanten dazu sehen ähnlich langweilig aus:
Delphi-Quellcode:
  const PROXYPORT  = 8888;
  const PROXYSERVER = '127.0.0.1';
  const SSLHOST    = 'NB1819157';
  const SSLPORT    = 5001;
Ich dachte das wäre vielleicht noch erwähnenswert.

Minz3 4. Feb 2020 10:26

AW: Indy - socket error #10061 & Unexpected EOF
 
Update:

Sowohl das GET, als auch das POST Problem ließen sich auf meine Einstellungen zurückführen...
Delphi-Quellcode:
  //IdHTTP.ProxyParams.ProxyPort             := PROXYPORT;
  //IdHTTP.ProxyParams.ProxyServer           := PROXYSERVER;
  //IdSSLIOHandlerSocketOpenSSL1.Host        := SSLHOST;
  //IdSSLIOHandlerSocketOpenSSL1.Port        := SSLPORT;
Nachdem die default Werte hier wiederhergestellt wurden, lief es zumindest beim GET wieder wie geplant. Und beim POST kommt nun eine neue Fehlermeldung:

"HHTP/1.1 400 Bad Request"

Achja und Fiddler scheint irgendwie auch als ein Proxy Server zu fungieren. Auf jeden Fall wurden die Anfragen umgeleitet und haben unter Anderem auch deswegen nicht funktioniert. Vorher habe ich noch nicht damit gearbeitet daher kann ich da keine genaue Aussage zu treffen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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