2016-07-08 14 views
2

私はaccess_tokenを使ってPOSTリクエストをしようとしていますが、POSTMANを使ってうまく動作しますが、同じリクエストをDelphiで実行しようとすると、 "Authorization = Bearer eyxxxxxx"を追加する方法が見つかりません。 .. "をリクエストヘッダに追加します。DelphiでIndyと「Authorization = Bearer」ヘッダーを追加するにはどうすればよいですか?

(うまく機能)POSTMAN要求:

POST/somepath HTTP/1.1
ホスト:someurl.com.br
認証:ベアラeyJhbGciOiJSUzI1NiJ9 .....
のContent-Type:アプリケーション/ JSON

(ommited体含量)

HTTPによって、デルファイによって生成された撮像インディ要求アナライザーER(常に401禁止エラーを返す、 "認可=ベアラー" の部分が存在しないため):

POST/somepath HTTP/1.1
ホスト:someurl.com.br
コンテンツタイプ:アプリケーション/ JSON

(体の含有量がommited)

Iが「...認可=ベアラeyxxxxxx」と以下のコードが、ヘッダ部分を使用してヘッダーを追加しようとしてきた要求に応じて生成されていない、401を返します禁じられたエラー。

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

答えて

2

問題が見つかりました。私は間違ったセパレータを "Authorization"と "Bearer"の間に追加しました。

誤:正しい

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

は: ':'

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

'=' で交換した後、私はPOSTMANによって受信された1つのように、期待される応答を受信しました。

+5

代わりに 'CustomHeaders.Values []'プロパティを使用する必要があります。したがって、セパレータについてはまったく気にする必要はありません: 'FIdHTTP.Request.CustomHeaders.Valus ['Authorization']:= 'Bearer' + txtToken.Text; ' –

+1

それはあまりにもうまくいった。代替のレミーのおかげで、Stackoverflowのすべてのサポートに感謝します。私はすでにあなたから答えられた他の質問についてたくさん学んだ。 =) – user3024902

関連する問題