gpt4 book ai didi

web-services - 使用 JaxWS 时将命名空间声明移动到根元素

转载 作者:行者123 更新时间:2023-12-04 03:59:15 25 4
gpt4 key购买 nike

我想使用 JaxWS 调用外部 SOAP Web 服务。 JaxWS 以以下形式发送请求

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<messageRootElement xmlns="some.ns">
<sampleChild>Content</sampleChild>
</messageRootElement>
</soap:Body>
</soap:Envelope>

在 SoapUI 中调用模拟服务设置工作正常。据称实际的外部网络服务不适用于该格式(我无法访问具有用于开发的外部网络服务的系统)。

外部网络服务,似乎可以处理表单的请求

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sns="some.ns">
<soap:Body>
<sns:messageRootElement>
<sns:sampleChild>Content</sns:sampleChild>
</sns:messageRootElement>
</soap:Body>
</soap:Envelope>

这也是 SoapUI 从相关 WSDL 生成示例请求的方式。

我的问题是:我如何告诉 JaxWS 以后一种形式发送它的请求?我假设,根据某些标准两者都是有效的,但我没有丝毫线索,外部 Web 服务基于什么技术,以及它与相关标准的符合程度。

向我解释说,不可能以这种方式更改 JaxWS 行为(如果是这种情况),这也是一个有用的答案。

最佳答案

您需要修改 package-info.java 文件,该文件作为您的网络服务调用所需的实体的一部分生成。修改文件如下:

@javax.xml.bind.annotation.XmlSchema(
namespace = "some.ns",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
xmlns = {
@javax.xml.bind.annotation.XmlNs(
prefix = "sns",
namespaceURI = "some.ns")
})

package some.ns;

关于web-services - 使用 JaxWS 时将命名空间声明移动到根元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293014/

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