标头中的重复命名空间,用于SOAP Web服务的错误响应

时间:2013-12-13 19:31:04

标签: java soap wsdl weblogic

如果我发送带有标题的请求,如下所示。

<S:Header>
  <ns2:transId xmlns="http://test.ws.com/testws"           
  xmlns:ns2="http://test.db.com/db9">123ASD89EDFE7363</ns2:transId>
</S:Header>

它的成功响应工作正常,标题中也没有不必要的命名空间。但是错误情况下,来自Web服务的响应与两个名称空间一起发送,使用相同的标头元素默认标识符,如下所示。,

<S:Header>
  <transId xmlns="http://test.ws.com/testws"   
  xmlns="http://test.db.com/db9">123ASD89EDFE7363</transId>
</S:Header>

由于上述格式,客户端应用程序无法解析响应。

使用wsdl中的clientgen生成客户端工件。任何人都可以帮助找到上述问题的解决方案。

提前致谢。

2 个答案:

答案 0 :(得分:0)

你能再说一次这个问题吗?

听起来你正在发出一个HTTP请求,其头部的值为“123ASD ...”,当服务器以OK(200)响应时,它会按预期工作,但是当服务器响应时有错误条件(4xx-5xx)然后响应不好。

是否在HTTP响应标头中复制了两次相同的标头?

或是它发送了额外的请求(可能是重定向)?

喜欢

GET获得了一个带有标题的301 repsonse,然后它可能会发送到错误页面,但它使用相同的标题两次或什么?

关于标题值的更多信息(每次都改变吗?)可能会有所帮助......

答案 1 :(得分:0)

感谢您的回复。它是带有头和HTTP的主体的SOAP消息,HTTP没有问题。当我们发送错误的soap请求时,错误响应就像是来自服务器的soap fault或schema验证错误。它没有重复标题,但是当一个soap请求与不必要的命名空间xmlns =“http://test.ws.com/testws”一起发送时(它与标题元素无关,但我的客户端应用程序每次都添加它发送请求),Web服务返回响应,包括上面的响应和xmlns =“http://test.db.com/db9”所需的命名空间。我的问题是Web服务在发送两个名称空间时没有使用不同的标识符。在一个事务(如sessionid)期间,标头值是静态的。