在Delphi 10.3中使用HTTPRIO进行基本身份验证

时间:2019-02-22 19:02:23

标签: delphi authentication delphi-10.3-rio

在Delphi 10.3中HTTPRIO.HTTPWebNode.OnBeforePost事件发生了变化。

在Delphi 10.3之前,事件处理程序是以这种方式定义的,并且可以完美地工作:

procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var
  auth: String;
begin
  auth := 'Authorization: Basic ' + IdEncoderMIME1.EncodeString('user:password');
  HttpAddRequestHeaders(Data, PChar(auth), Length(auth), HTTP_ADDREQ_FLAG_ADD);
end;

在Delphi 10.3中,Data参数消失了,取而代之的是THTTPClient,我不知道如何使用它实现基本身份验证:

procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Client: THTTPClient);
var
  auth: String;
begin
  auth := 'Authorization: Basic ' + IdEncoderMIME1.EncodeString('user:password');
  ???
end;

有任何提示吗?

1 个答案:

答案 0 :(得分:4)

尝试使用请求的UsernamePassword属性,例如:

HTTPReqResp.UserName := 'user';
HTTPReqResp.Password := 'password';

如果这不起作用,请尝试使用客户端的CustomHeaders属性,例如:

Client.CustomHeaders['Authorization'] := 'Basic ' + IdEncoderMIME1.EncodeString('user:password');