如何在 Delphi 中使用 Indy 添加 "Authorization=Bearer" header?

How to add a "Authorization=Bearer" header with Indy in Delphi?

我正在尝试使用 access_token 执行 POST 请求,并且使用 POSTMAN 可以正常工作,但是当我尝试对 Delphi,我找不到将 "Authorization=Bearer eyxxxxxx..." 添加到请求 header 的方法,就像 POSTMAN 所做的那样。

POSTMAN 请求(运行良好):

POST /somepath HTTP/1.1
主持人:someurl.com.br
授权:不记名 eyJhbGciOiJSUzI1NiJ9.....
Content-Type: application/json

(body 内容省略)

Indy 请求由 Delphi 生成,被 HTTP Analyzer 捕获(总是返回 401 Forbidden 错误,因为缺少 "Authorization=Bearer" 部分):

POST /somepath HTTP/1.1
主持人:someurl.com.br
Content-Type: application/json

(body 内容省略)

我已尝试使用下面的代码添加 header,但带有 "Authorization=Bearer eyxxxxxx..." 的 header 部分未根据请求生成,返回 401 Forbidden 错误。

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

刚发现问题。我在 "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 收到的回复一样。