0

当我从 SOA 客户端 firefox 插件将 SOAP 主体发布到我的 Yii 网络服务时,它返回 WSDL 并且不调用相应的方法。

如何调用各自的方法?

可能是什么问题呢?

4

1 回答 1

2

查看生成的 WSDL 文件:服务公开的方法的基本 URL位于文件末尾的“位置”属性中(例如wsdl:service > wsdl:port > soap:address)。

样本 :

[...]
<wsdl:service name="ServiceProviderService">
<wsdl:port name="ServiceProviderPort" binding="tns:ServiceProviderBinding">
<soap:address location="http://localhost/website/service/soap/ws/1"/>
</wsdl:port>
</wsdl:service>
[...]

提供的 URL 将“ /ws/1 ”(或“ ?ws=1 ”,取决于您的应用程序设置)附加到公开 Web 服务的控制器路由。

请参阅CWebServiceAction类参考:

CWebServiceAction 有两个目的。一方面,它显示指定 Web 服务 API 的 WSDL 内容。另一方面,它调用所请求的 Web 服务 API。一个名为ws的 GET 参数用于区分这两个方面:GET 参数的存在表示执行后一个动作。

使用的 GET 参数是CWebServiceAction::serviceVar属性的值。

因此,您必须将所需的 GET 参数(例如“ws=1”)附加到被调用的 URL 才能使用您的 Web 方法……或者使用“真实”的 SOAP 客户端来获取正确的服务 URL 来调用 Web方法。

于 2012-08-12T07:39:49.357 回答