php – 即使wsdl中的IP地址错误,为什么web服务返回数据?
有一个
PHP文件充当web服务,并且有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> 问题是webservice和wsdl所在的计算机的IP地址是192.168.1.123,我从PHP Web服务调用函数时获取数据!那么< soap:地址标签不是必需的吗?
简短回答:地址只是一个指示(对于生成代码和配置的开发人员或工具),可以访问服务的位置以及期望的URL类型.
答案很长:如果你看一下WSDL schema,你会发现port元素被定义为只包含一个名字和绑定属性,所以这就足够了.您的服务元素看起来像这样,它在技术上是正确的: <service name="ClientService"> <port name="ClientPort" binding="typens:ClientBinding" /> </service> 但是port也被定义为一个可扩展元素,它允许将其他命名空间中的元素添加到它(例如< soap:address>). 通常(是的!)< soap:地址>应该说明实际服务所在的位置,但不幸的是,由于不同的因素,它并不总是如此: >某些服务器地址已更改,人们忘记更新WSDL文件(对于contract first创建的WSDL); WSDL主要用于生成客户端代码.完成后,您不再需要WSDL,只需要一个URL即可连接到已部署的Web服务.该地址作为工具添加一些默认配置的提示,稍后您将替换为调用的REAL地址. 理想情况下,WSDL中的内容应该等于真实地址,但是这些信息通常会通过维护任务而落后,而事情最终会过时.您应该指定一个作为提示,即使它只是< soap:address location =“http://localhost/imfmobile/webservice/InterfaceTransfererClient.php”/>. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |