如何使用 SOAP UI 创建有效的 WS-A 请求
Posted
技术标签:
【中文标题】如何使用 SOAP UI 创建有效的 WS-A 请求【英文标题】:How to create a valid WS-A request with SOAP UI 【发布时间】:2015-12-14 04:32:19 【问题描述】:我的网络服务在其 WSDL 中定义了一个 WS 寻址策略,其中包含
<wsp:Policy wss:Id="WSAddressing_policy"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">
<wsam:Addressing>
<wsp:policy/>
</wsam:Addressing>
</wsp:Policy>
...和
<wsdl:binding name="OutboundBinding" type="tns:OutboundPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsp:PolicyReference URI="#WSAddressing_policy"/>
<!-- Verify Availability -->
<wsdl:operation name="VerifyAvailability">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="VerifyAvailabilityRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="VerifyAvailabilityResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
我使用 CXFs 自动拦截策略:
<cxf:bus>
<cxf:features>
<p:policies ignoreUnknownAssertions="true"/>
<cxf:logging/>
</cxf:features>
</cxf:bus>
现在我无法使用 SOAP UI 创建对此 Web 服务的有效请求 - 无论我尝试哪种 WS-A 设置,我总是得到以下响应:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode xmlns:ns1="http://www.w3.org/2005/08/addressing">ns1:MessageAddressingHeaderRequired</faultcode>
<faultstring>A required header representing a Message Addressing Property is not present</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
我做错了什么?
更新
我也无法使用 CXF 客户端本身创建有效请求。如果我从
更改 WSDL,我设法让它工作<wsp:Policy wss:Id="WSAddressing_policy">
<wsam:Addressing>
<wsp:policy/>
</wsam:Addressing>
</wsp:Policy>
到
<wsp:Policy wss:Id="WSAddressing_policy">
<wsaw:UsingAddressing xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" wsp:Optional="false" />
</wsp:Policy>
【问题讨论】:
【参考方案1】:目前看来寻址元数据命名空间是 CXF 的问题。 我提交了bugreport。 使用
xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata" 代替 xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 解决问题。
【讨论】:
以上是关于如何使用 SOAP UI 创建有效的 WS-A 请求的主要内容,如果未能解决你的问题,请参考以下文章
对 SOAP Web 服务的 JQuery AJAX 调用 - 访问被拒绝。在 SOAP UI 中工作