【发布时间】:2020-02-26 11:17:14
【问题描述】:
我有一个使用 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 中是否可能。
谁能帮帮我? :)
【问题讨论】:
-
如果您想在运行时从 WSDL 文档中动态查找连接信息,您可以设置 WSDLLocation 属性。设置 WSDLLocation 后,从对象检查器的下拉列表中选择 Service 和 Port 属性的值,以完全指定要使用的绑定。
-
您好 fpiette,感谢您的回答。在我的案例中,我使用的是“RIO.URL := Addr;”不是“ RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; ”部分当我尝试启动请求时,我收到错误 401(未经授权)。但是我只在 delphi 中收到该消息,当我在“抢占式连接”到 SUOP UI 时它会找到。这就是为什么我尝试对 Delphi 做同样的事情。
-
为什么要在运行时创建
THTTPReqResp的实例?THTTPRIO将忽略它,除非您在运行时链接实例:rio.HTTPWebNode := HTTPReqResp1。THTTPRIO在内部创建自己的实例。您可以在设计时通过对象检查器完美地配置其属性(包括UserName和Password)。要在运行时执行此操作,请使用rio.HTTPWebNode.UserName和rio.HTTPWebNode.Password。
标签: delphi connection preemptive