gpt4 book ai didi

java - SOAP 体,命名空间问题

转载 作者:行者123 更新时间:2023-12-04 06:42:19 25 4
gpt4 key购买 nike

我在 Apache Geronimo 2.1.3 上有一个 Web 服务应用程序。

我正在使用 JAX-WS,使用 SOAP 1.1 注释 POJOS。 (使用 Sun JDK 1.5)

各种客户端都可以顺利使用 Web 服务。

一位新客户不工作。在工作客户端中,只有soapenv:Body 下的子元素有命名空间声明,子元素的子元素没有命名空间声明。在新客户端中,soapenv:Body 的所有后代,包括 child 的 child ,都有命名空间声明。

本质上,这有效:

<soapenv:Body>
<ns1:Echo>
<Message>Hello world</Message>
...

但这不会:
<ns1:Echo>
<ns1:Message>Hello world</ns1:Message>
...

登录应用程序会显示 Message 为空,而不是“Hello world”

这个“坏”的请求可以吗?看起来它确认了 WS-I 基本配置文件?

客户端程序不能改变。有没有办法让我覆盖某些东西,让这个请求的两个版本都能工作?

最佳答案

Messagens1:Message是不同的类型,就像虚构的 java 类 Messagens1.Message .服务器需要 Message在默认命名空间中声明的元素(应该有一个 xmlns="<my.default.namespace.name>" 某处)但它得到一个 <ns1:Message>并简单地忽略它。

如果您不能强制客户端发送有效的 xml soap 消息(根据 wsdl),您可以尝试更改服务器代码,使其接受 <Message>元素以及 <ns1:Message>元素为 <ns1:Echo> children 。您必须为 ns1 中的元素声明类型。命名空间并添加一个 choice元素到 <ns1:Echo>宣言。

关于java - SOAP 体,命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4087692/

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