Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTPost funktioniert nicht (https://www.delphipraxis.net/208518-idhttpost-funktioniert-nicht.html)

taveuni 13. Aug 2021 13:55

AW: IdHTTPost funktioniert nicht
 
Was hast Du für eine Delphi Version? Es wäre wirklich besser Du würdest mit einem REST Framework arbeiten.

Vor 10.4.1 habe ich MARS gearbeitet. Ultra einfach und flexibel: https://github.com/andrea-magni/MARS
Jetzt mit der in Delphi integrierten RestApi. Diese ist nun auch (halbwegs) brauchbar

HolgerX 14. Aug 2021 05:16

AW: IdHTTPost funktioniert nicht
 
Hmm..

Verwende mal folgendes:

Delphi-Quellcode:
      Http.Request.BasicAuthentication := False;
      Http.Request.CustomHeaders.FoldLines := False;
      Http.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + AToken;
Da es sich bei 'Authorization' nicht um eine BasicAuthentication handelt, kann es sein, dass INDY den Parameter löscht, wenn kein User mit Passwort angegeben ist.

Hiermit kann ich zumindestens eine OST Abfrage unter Verwendung eines Tokens erfolgreich gegen ein Kundensystem laufen lassen.

horstmeyer 16. Aug 2021 09:38

AW: IdHTTPost funktioniert nicht
 
Hallo HolgerX,

danke für das Beispiel. Leider funktioniert es immer noch nicht. Ich bekomme als Rückmeldung 401 unauthorized. Da der Aufruf mit curl ja funktioniert, wird in Delhpi irgendetwas falsch übergeben. Der String im falschen Format übergeben oder es wird etwas abgeschnitten. Leider weiss ich nicht wie ich den http.post "abfangen" kann, so dass ich sehe was wirklich an den connector übergeben wird. Hat hier einer eine Idee?

Viele Grüße
Horst

TiGü 16. Aug 2021 09:41

AW: IdHTTPost funktioniert nicht
 
Zitat:

Zitat von horstmeyer (Beitrag 1493605)
Hat hier einer eine Idee?

Demjenigen, der sich den Unsinn an Policy wegen Open-Source Software und kostenloser proprietärer Software in den Schwitzkasten nehmen und rütteln und schütteln?

Mit Telrik Fiddler könntest du in ein paar Minuten den Inhalt vom Beispiel-POST per curl mit deinen Delphi-POST vergleichen und den entscheidenden Unterschied erkennen.

taveuni 16. Aug 2021 09:49

AW: IdHTTPost funktioniert nicht
 
Zitat:

Zitat von horstmeyer (Beitrag 1493605)
Hat hier einer eine Idee?

Wireshark? Ist sogar open source.

Delphi.Narium 16. Aug 2021 10:00

AW: IdHTTPost funktioniert nicht
 
401 heißt: Die Anmeldung passt nicht.

Meine Erfahrung: Nicht alle Server arbeiten problemlos mit Indy. Zuweilen hilft es, den Inhalt von UserAgent der HTTP-Komponente mit dem Wert eines aktuellen Browsers "zu versorgen".

Kann helfen, muss aber nicht.

https://developer.mozilla.org/en-US/...ers/User-Agent

Union 16. Aug 2021 12:24

AW: IdHTTPost funktioniert nicht
 
So setze ich den Http-Header wenn Indy genutzt wird. Die Angaben in spitzen Klammern sind entsprechend zu ersetzen (UserAgent, Application):
Delphi-Quellcode:
FClient.Request.UserAgent := '<UserAgent>';
FClient.Request.Accept := 'application/<Application>+json';
FClient.HandleRedirects := true;
FClient.Request.CustomHeaders.Clear;
FClient.Request.CustomHeaders.AddValue('Accept-Language','de-DE');
FClient.Request.CustomHeaders.AddValue('authorization', 'Bearer ' + FToken);
FClient.HTTPOptions := FClient.HTTPOptions + [hoWantProtocolErrorContent];
So setze ich den RestClient ein:
Delphi-Quellcode:
FRestClient          := TRESTClient.Create(BASEURL);
FRestRequest         := TRestRequest.Create(nil);
FRestResponse        := TRESTResponse.Create(nil);
FRestRequest.Client  := FRestClient;
FRestRequest.Response := FRestResponse;

FRestRequest.HandleRedirects := True;
FRestRequest.Params.Clear;
FRestRequest.Accept := 'application/<application>+json';
FRestRequest.Params.AddHeader('Accept-Language', 'de-DE');
FRestRequest.AddParameter('Authorization', FAuthorization , pkHTTPHEADER, [poDoNotEncode]);
FRestRequest.OnHTTPProtocolError := CatchHttpProtocolError;
Beide Methoden funktionieren mit verschiedenen Ziel-Servern produktiv bei > 1000 Usern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.
Seite 2 von 2     12   

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