AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdHTTPost funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

IdHTTPost funktioniert nicht

Ein Thema von horstmeyer · begonnen am 9. Aug 2021 · letzter Beitrag vom 16. Aug 2021
Antwort Antwort
Seite 2 von 2     12   
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: IdHTTPost funktioniert nicht

  Alt 13. Aug 2021, 14:55
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
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (13. Aug 2021 um 15:05 Uhr) Grund: Edit: Hinweis auf Mars hinzugefügt
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#12

AW: IdHTTPost funktioniert nicht

  Alt 14. Aug 2021, 06:16
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.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
horstmeyer

Registriert seit: 9. Aug 2021
46 Beiträge
 
#13

AW: IdHTTPost funktioniert nicht

  Alt 16. Aug 2021, 10:38
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: IdHTTPost funktioniert nicht

  Alt 16. Aug 2021, 10:41
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.
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: IdHTTPost funktioniert nicht

  Alt 16. Aug 2021, 10:49
Hat hier einer eine Idee?
Wireshark? Ist sogar open source.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#16

AW: IdHTTPost funktioniert nicht

  Alt 16. Aug 2021, 11:00
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
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#17

AW: IdHTTPost funktioniert nicht

  Alt 16. Aug 2021, 13:24
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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