我有一个用DELPHI XE 5创建的web服务客户端,我使用了THTTPRIO,导入了wsdl并创建了".pas"文件。web服务的服务器请求抢先的基本身份验证(与SoapUI配合良好(;我知道如何使用THTTPReqResp的用户和密码进行身份验证。
rio := THTTPRIO.Create(nil);
HTTPReqResp1 := THTTPReqResp.Create(rio);
HTTPReqResp1.UserName := sUserName;
HTTPReqResp1.Password := sPasswordEncrypted;
但我没有连接到web服务,因为我不知道如何进行抢占,以及在Delphi中是否可能。
有人能帮我吗?:(
我刚刚发现如何在DELPHI中使用"prepreprive"连接。您必须修改您的"rio.HTTPWebNode"的OnBeforePost,如下所示:
var
rio : THTTPRIO;
HTTPReqResp1: THTTPReqResp;
uselessObject: TUselessClass;
try
rio := THTTPRIO.Create(nil);
uselessObject := TUselessClass.Create();
rio.HTTPWebNode.GetHTTPReqResp.OnBeforePost :=
uselessObject.HTTPRIOHTTPWebNode1BeforePost;
使用此程序:
procedure TUselessClass.HTTPRIOHTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
auth,toEncode: string;
begin
toEncode := Format('%s:%s',[sUserName,sPasswordEncrypted]);
auth := 'Authorization: Basic ' + TIdEncoderMIME.EncodeString(toEncode);
HttpAddRequestHeaders(Data, PChar(auth), Length(auth), HTTP_ADDREQ_FLAG_ADD);
end;