【发布时间】:2012-01-23 15:50:16
【问题描述】:
我正在将一个 Delphi 2007 程序转换为 Delphi XE2 并且遇到以下错误消息的问题:
无法从 WSDL 'http://.....' 检索服务/端口“/”的 URL 端点
我要连接的服务是用 Delphi 2007 编写的。
在 2007 年,它编译并运行没有问题。 在具有相同代码的 XE2 上,它会因错误而崩溃。
我尝试使用新的 WSDL 导入器重新导入界面,并设置了默认值,但没有任何乐趣。
我也尝试设置端口和服务名称,但错误仍然存在。不确定哪些信息有用,但据我所知它正在连接。
这是我正在使用的方法的操作
<operation name="CheckRegistration">
<soap:operation soapAction="urn:ScubaUpdateWSIntf-IScubaUpdateWS#CheckRegistration" style="rpc"/>
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ScubaUpdateWSIntf-IScubaUpdateWS"/>
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ScubaUpdateWSIntf-IScubaUpdateWS"/>
</output>
</operation>
这是消息:
<message name="CheckRegistration10Request">
<part name="centreId" type="xs:int"/>
<part name="centreName" type="xs:string"/>
<part name="checkActiveOnly" type="xs:boolean"/>
</message>
<message name="CheckRegistration10Response">
<part name="return" type="xs:boolean"/>
</message>
除了导入 WSDL,抛出 HTTPRIO 并调用方法
(HTTPRIO1 as IScubaUpdateWS).CheckRegistration(strtoint(tcentre),tcentreName,true);
我不认为我在做任何其他事情,正如我所说,相同的代码适用于 Delphi 2007。
【问题讨论】:
-
在设计时,当您设置 HTTPRIO.WSDLLLocation 属性时,您是否能够选择 HTTPRIO.Service 和 HTTPRIO.Port 属性?您应该能够在设计时设置服务和端口,如果没有,那么 URL 可能有问题。我已经多次遇到这个问题,似乎只要我在设计时正确设置一次,错误就会消失..
-
嗨,John,谢谢,在 Delphi 2007 ide 和 Xe2 中,该端口是空白的。设置它只会更改错误消息。我刚刚尝试连接到另一个 delphi WSDL 并且遇到了同样的问题。我将尝试连接到 c# WSDL 或 Amazon DLL 之一,看看我是否可以确定它是否只是导致问题的 delphi wsdls。我会在今天晚些时候回复。
-
刚刚确认 Xe2 可以连接到 .net Web 服务。我的 delphi Web 服务中一定有什么东西导致了端点错误。
-
John - 似乎我可以为我的一项服务解决它,有两个端口和服务相同 - 我选择了第二个并且它有效。问题是为什么?两个在 DELPHI XE2 上。我也无法确定在其他网络服务上使用哪种组合(我需要的是 sods 法)!
-
有多个同名服务?我认为这就是问题所在..您可能想要评估您的网络服务的构建..
标签: delphi wsdl delphi-xe2 delphi-2010 webservice-client