phe*_*mix 3 php wsdl web-services
有一个PHP充当 a 的文件webservice,并且该wsdl文件中有以下几行:
<service name="ClientService">
<documentation></documentation>
<!-- partie 8 : Port -->
<port name="ClientPort" binding="typens:ClientBinding">
<soap:address location="http://192.168.1.12/imfmobile/webservice/InterfaceTransfererClient.php"/>
</port>
</service>
Run Code Online (Sandbox Code Playgroud)
问题是webservice和所在计算机的IP地址wsdl是192.168.1.123,并且我从web服务调用函数时获取数据PHP!那么<soap:address标签就没有必要了吗?
简短回答:地址只是(对于生成代码和配置的开发人员或工具)可以访问服务的位置以及期望的 URL 类型的指示。
长答案:如果您查看WSDL 架构,您将看到该port元素被定义为仅包含 aname和binding属性,因此这就足够了。您的服务元素可能如下所示,并且在技术上是正确的:
<service name="ClientService">
<port name="ClientPort" binding="typens:ClientBinding" />
</service>
Run Code Online (Sandbox Code Playgroud)
但port也被定义为可扩展元素,允许将其他命名空间的元素添加到其中(例如<soap:address>)。
通常(是的!)<soap:address>应该说明真正的服务暴露在哪里,但不幸的是,由于不同的因素,它并不总是这样发生:
WSDL 主要用于生成客户端代码。完成后,您不再需要 WSDL,您只需要一个用于连接到已部署的 Web 服务的 URL。该地址是工具添加一些默认配置的提示,稍后您可以将其替换为调用的真实地址。
理想情况下,WSDL 中的内容应等于真实地址,但这些信息通常会在维护任务中落下,最终会变得过时。您应该指定一个作为提示,即使它只是<soap:address location="http://localhost/imfmobile/webservice/InterfaceTransfererClient.php"/>.
| 归档时间: |
|
| 查看次数: |
1373 次 |
| 最近记录: |