2016-07-08 44 views
2

Ich versuche, eine POST-Anfrage mit einem access_token, und es funktioniert gut mit POSTMAN, aber wenn ich versuche, die gleiche Anfrage auf Delphi zu tun, kann ich keine Möglichkeit finden, die "Authorization = Bearer eyxxxxxx. .. "in den Request-Header, wie es POSTMAN tut.Wie fügt man einen Header "Authorization = Bearer" mit Indy in Delphi hinzu?

POSTMAN Request (gut funktioniert):

POST/somepath HTTP/1.1
Host: someurl.com.br
Berechtigung: Bearer eyJhbGciOiJSUzI1NiJ9 .....
Content-Type: application json/

(Körpergehalt ommited)

Indy Anforderung generiert von Delphi, erfasst durch HTTP Analyz er (immer wiederkehr 401 Forbidden Fehler, weil das Fehlen von "Authorization = Bearer" Teil):

POST/somepath HTTP/1.1
Host: someurl.com.br
Content-Type: application/json

(Körper Inhalt ommited)

ich habe versucht, den Header mit dem Code unten, aber der Kopfteil mit dem hinzufügen „Authorization = Bearer eyxxxxxx ...“ ist nicht auf Anfrage erzeugt, die 401 Rückkehr Verbotener Fehler

FIdHTTP.Request.CustomHeaders.FoldLines := False; 
FIdHTTP.Request.CustomHeaders.Add('Authorization=Bearer ' + txtToken.Text); 

Antwort

2

Nur das Problem gefunden. Ich habe das falsche Trennzeichen zwischen den Wörtern "Authorization" und "Bearer" hinzugefügt.

Falsch:

FIdHTTP.Request.CustomHeaders.FoldLines := False; 
FIdHTTP.Request.CustomHeaders.Add('Authorization=Bearer ' + txtToken.Text); 

Correct:

FIdHTTP.Request.CustomHeaders.FoldLines := False; 
FIdHTTP.Request.CustomHeaders.Add('Authorization:Bearer ' + txtToken.Text); 

Nach Ersetzen der '=' durch ':', erhielt ich die erwartete Antwort, wie die von POSTMAN empfangen.

+5

Sie sollten stattdessen die Eigenschaft 'CustomHeaders.Values ​​[]' verwenden, dann müssen Sie sich um das Trennzeichen überhaupt keine Gedanken machen: 'FldHTTP.Request.CustomHeaders.Valus ['Authorization']: = 'Bearer' + txtToken.Text; ' –

+1

Es hat auch so funktioniert. Danke für die Alternative Remy, und danke für all deine Unterstützung bei Stackoverflow. Ich habe viel über andere Fragen gelernt, die Sie bereits beantwortet haben. =) – user3024902