加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 即使wsdl中的IP地址错误,为什么web服务返回数据?

发布时间:2020-12-13 13:41:23 所属栏目:PHP教程 来源:网络整理
导读:有一个 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/imfmob
有一个 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是由框架(contract last)自动生成的,框架无法知道Web服务暴露在哪个外部地址,因此它添加了一些默认地址和它知道的东西(如本地IP或机器名);
>你有一个中央WSDL,它描述了3个相同的部署服务(一个在DEV中,一个在UAT中,一个在PROD中),你不能为所有3个服务添加一个地址;
>等等

WSDL主要用于生成客户端代码.完成后,您不再需要WSDL,只需要一个URL即可连接到已部署的Web服务.该地址作为工具添加一些默认配置的提示,稍后您将替换为调用的REAL地址.

理想情况下,WSDL中的内容应该等于真实地址,但是这些信息通常会通过维护任务而落后,而事情最终会过时.您应该指定一个作为提示,即使它只是< soap:address location =“http://localhost/imfmobile/webservice/InterfaceTransfererClient.php”/>.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读