gpt4 book ai didi

delphi - Delphi XE 中使用 Indy IdHttp Digest 身份验证的 401

转载 作者:行者123 更新时间:2023-12-02 00:04:09 24 4
gpt4 key购买 nike

尝试使用 Digest 对使用 Delphi XE 的合作伙伴的 Web 服务执行 get()。

我已将 IdAuthenticationDigest 包含到 use 子句中,该子句应该根据我所读到的内容自动工作 - 但我一定错过了一些东西,因为我收到了 401 Unauthorized。

代码:

begin
// Init request:
IdHttp := TIdHttp.Create(nil);
try
idHttp.Request.ContentType := self.inputType; // 'application/xml'
idHttp.Request.Accept := self.outputType; //'application/json';

// Set request method:
idHttp.Request.Method := Method; // 'Get'
// Set username and password:
idHttp.Request.BasicAuthentication := False;
// IdHttp.Request.Username/Password also fails
IdHttp.Request.Authentication.Username := 'xx';
IdHttp.Request.Authentication.password := 'xx';

IdHttp.Request.ContentLength := Length(Body);

// Send request:
if Method = 'GET' then
Result := idHttp.Get(self.ServiceHost + URI)
else
if Method = 'POST' then
Result := idHttp.Post(self.ServiceHost + URI, SendStream);

finally
idHttp.Free;
end;
end;

最佳答案

您需要设置 Request.UsernameRequest.Password 属性,而不是使用 Request.Authentication 属性。另外,根本不要设置 Request.MethodRequest.ContentLength 属性。所有这三个属性均由 TIdHTTP 在内部管理。

  // Init request:   
  IdHttp := TIdHttp.Create(nil);
  try
    idHttp.Request.ContentType := self.inputType; // 'application/xml'
    idHttp.Request.Accept := self.outputType; //'application/json';

    // Set username and password:
    idHttp.Request.BasicAuthentication := False;
    IdHttp.Request.Username := 'xx';
    IdHttp.Request.Password := 'xx';

    // Send request:
    if Method = 'GET' then
      Result := IdHttp.Get(self.ServiceHost + URI)
    else
    if Method = 'POST' then
      Result := IdHttp.Post(self.ServiceHost + URI, SendStream);
   finally
    IdHttp.Free;
   end;

关于delphi - Delphi XE 中使用 Indy IdHttp Digest 身份验证的 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com