gpt4 book ai didi

java - 当部分访问器元素通过 namespace 限定时,JAX WS Web 服务接收 null 参数

转载 作者:行者123 更新时间:2023-12-01 05:24:54 25 4
gpt4 key购买 nike

我使用 Netbeans 7.0 和 JAX-WS 实现了一个 Web 服务。

当 Soap UI 调用 Web 服务时,它会按预期工作。当 SAP CRM 调用 Web 服务实现时,它会收到 null 参数:在下面的示例中,userId 为 null 而不是“foo”。 (userId是String类型)

SOAP UI 发送的 SOAP 消息是:

   <?xml version="1.0" encoding="UTF-8" ?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:IciSystemInterface">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<urn:getWorkcenterCapability>
<userId>foo</userId>
</urn:getWorkcenterCapability>
</soapenv:Body>
</soapenv:Envelope>

SAP CRM 发送的 SOAP 消息是:

    <?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<pre:user xmlns:pre="urn:IciSystemInterface" SOAP-ENV:mustUnderstand="0" xsi:type="xsd:string">IC_AGENT_SRV</pre:user>
<pre:language xmlns:pre="urn:IciSystemInterface" SOAP-ENV:mustUnderstand="0" xsi:type="xsd:string">EN</pre:language>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns0:getWorkcenterCapability xmlns:ns0="urn:IciSystemInterface">
<userId xmlns="urn:IciSystemInterface">foo</userId>
</ns0:getWorkcenterCapability>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

如果我从 userId 标记中删除 xmlns 属性,它就会起作用(我进行了更改并通过使用 HTTP 客户端调用 Web 服务进行了测试):

    <ns0:getWorkcenterCapability xmlns:ns0="urn:IciSystemInterface">
<userId>foo</userId>
</ns0:getWorkcenterCapability>

问题是我无法更改 SAP CRM 的调用方式。有没有办法让 JAX WS 忽略部分访问器元素的 namespace ?

提前谢谢您。

最佳答案

我听从了@Branden的建议。我使用 SoapHandler 捕获对 Web 服务的调用,并在 JAX-WS 调用我的 Web 服务实现之前处理肥皂消息。它起作用了。

关于java - 当部分访问器元素通过 namespace 限定时,JAX WS Web 服务接收 null 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com