1

我有一个使用 DELPHI XE 5 创建的 Web 服务客户端,我使用了 THTTPRIO,导入了 wsdl 并创建了“.pas”文件。Web 服务服务器请求抢先式基本身份验证(可与 SoapUI 一起正常工作);我知道如何使用 THTTPReqResp 的用户名和密码进行身份验证。

rio := THTTPRIO.Create(nil);
HTTPReqResp1 := THTTPReqResp.Create(rio);
HTTPReqResp1.UserName := sUserName;
HTTPReqResp1.Password := sPasswordEncrypted;

但是我没有连接到网络服务,因为我不知道如何进行抢占式以及在 Delphi 中是否可能。

谁能帮我 ?:)

4

1 回答 1

0

我刚刚发现如何在 DELPHI 中使用“抢占式”连接。您必须像这样修改“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;
于 2020-03-02T10:48:28.150 回答