消费Web服务与身份验证总是提供消息验证所需

时间:2010-12-16 10:22:02

标签: web-services delphi delphi-2010

我尝试使用Delphi 2010使用一个Web服务。 此Web服务在端口8000上进行身份验证。

我实现了

function TForm4.EncodeLoginPW(const ALogin, APW: string): string;
begin
  Result := EncdDecd.EncodeString(ALogin + ':' + APW); // EncdDecd is not documented in 
end;


procedure TForm4.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var
  s: string;
begin
  s := 'Authorization: Basic ' + EncodeLoginPW(UserName, Password);
  if not HttpAddRequestHeaders(Data, PChar(s), Length(s), HTTP_ADDREQ_FLAG_ADD) then
    ShowMessage('HttpAddRequestHeaders' + SysErrorMessage(GetLastError()));
end;

但我仍然留言“需要验证”。

我做错了吗?

2 个答案:

答案 0 :(得分:2)

对于基本身份验证,这应该有效:

Basic Authentication in Delphi 7 SOAP

this post中所述,较新版本的Delphi也允许使用

HTTPRio.HTTPWebNode.UserName := Username;
HTTPRio.HTTPWebNode.Password := Password;

答案 1 :(得分:0)

如果它仍然不起作用,您可以尝试使用其他客户端(.Net或Java),并在本地代理(FiddlerDon's Proxy)的帮助下比较HTTP流量或嗅探器(WireShark),找到相关的差异。