wsdl文档 中soap:address location、soap12:address location、http:address location的作用

最近接口提供方升级接口,导致我调用出错,在此记录下本次解决问题后的弄懂的一些知识点。

最初是cxf调用提供方接口报错:Could not send Message.

1.首先排查接口能否访问,接口提供方webservice地址:http://59.2.1.18:6901/services/MyServices?wsdl 能正常访问

2.检查wsdl文档

wsdl:service部分内容如下

<wsdl:service name="MyServices">
        <wsdl:port name="MyServicesHttpSoap11Endpoint" binding="ns:MyServicesSoap11Binding">
            <soap:address location="http://10.0.70.199:6900/services/MyServices.MyServicesHttpSoap11Endpoint/"/>
        </wsdl:port>
        <wsdl:port name="MyServicesHttpSoap12Endpoint" binding="ns:MyServicesSoap12Binding">
            <soap12:address location="http://10.0.70.199:6900/services/MyServices.MyServicesHttpSoap12Endpoint/"/>
        </wsdl:port>
        <wsdl:port name="MyServicesHttpEndpoint" binding="ns:MyServicesHttpBinding">
            <http:address location="http://10.0.70.199:6900/services/MyServices.MyServicesHttpEndpoint/"/>
        </wsdl:port>
</wsdl:service>

3.定位原因。10.0.70.199:6900这个ip跟端口跟wsdl地址中的59.2.1.18:6901不一致,且网络不通。问题应该就是出在这里,提供方一开始不承认是这里导致的,wsdl文档service部分修改为如下报文后我再调用果然就没有问题了。

<wsdl:service name="MyServices">
        <wsdl:port name="MyServicesHttpSoap11Endpoint" binding="ns:MyServicesSoap11Binding">
            <soap:address location="http://59.2.1.18:6901/services/MyServices.MyServicesHttpSoap11Endpoint/"/>
        </wsdl:port>
        <wsdl:port name="MyServicesHttpSoap12Endpoint" binding="ns:MyServicesSoap12Binding">
            <soap12:address location="http://59.2.1.18:6901/services/MyServices.MyServicesHttpSoap12Endpoint/"/>
        </wsdl:port>
        <wsdl:port name="MyServicesHttpEndpoint" binding="ns:MyServicesHttpBinding">
            <http:address location="http://59.2.1.18:6901/services/MyServices.MyServicesHttpEndpoint/"/>
        </wsdl:port>
</wsdl:service>

因为对方甩锅的时候,我对这三个标签的作用不很清楚,反驳不了。百度后查询到一段关于address localtion的介绍:"soap:address" is used to specify an address where the Web service can be accessed.

以及 ApacheCXFWebServiceDevelopment.pdf中的这段话

再仔细看wsdl文档中的localtion:http://59.2.1.18:6901/services/MyServices.MyServicesHttpSoap11Endpoint/,“http://59.2.1.18:6901/services/MyServices”拼接上?wsdl,就是webservice地址;MyServicesHttpSoap11Endpoint是port标签的name。所以推断这三个标签的作用就是“指定被访问的webservice地址”,也就是每个接口实际被调用的地址

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值