【问题标题】:HOWTO override Axis2 request headers for .NET web service?如何覆盖 .NET Web 服务的 Axis2 请求标头?
【发布时间】:2009-06-24 21:27:26
【问题描述】:

我必须使用在 .NET 2.0 中实现的第 3 方 Web 服务(当然是在 IIS 上)。

我必须制作一个 java 客户端。我正在使用 wsdl2java 来生成 SOAP 存根。

由于原来的 Apache Axis 项目现在似乎无人维护,而且我在解析来自服务的一些响应时遇到了一些问题,因此我将客户端转换为使用最新 (1.5) 版本的 Axis2。现在,.NET 服务甚至无法识别我的请求。

我设法关闭了“分块”(其中“存根”是由 wsdl2java 生成的 MumbleStub 类型的变量,我在这里将几行代码显示为一个可怕的行):

stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);

.. 所以至少服务将我的请求 AS 识别为一个请求,尽管是一个糟糕的请求:“HTTP/1.1 400 Bad Request”现在是响应(而不是“介绍/摘要”页面提供我是 WSDL 的链接)。

我注意到 Axis ("1") 请求具有不同的 Content-TYPE 标头(text/xml,vs application/soap-xml),我想知道如何更改此请求标头,如果确实如此问题。

另外,还有其他人遇到过这个问题吗?问题真的是 Axis2 添加到请求开头的问题(此处无法显示,因为它看起来像博客引擎的“元素注入”)... xml 版本-“1.0”...“XML 元介绍标签”?

WS-Deathstar,确实如此。

【问题讨论】:

  • 你可以张贴这样的东西说 pastebin 或类似的东西。或将它们标记为“代码”,以便您发布任何内容
  • 顺便说一句。我说的是“无法显示”的部分

标签: asp.net web-services axis2 wsdl2java


【解决方案1】:

当您提到不同的内容类型标头时,我猜您的客户端尝试发送 SOAP 1.2 请求,而第 3 方应用程序只理解 SOAP 1.1

尝试更改使用的肥皂版本,因为 AFAIK AXIS2 默认使用 SOAP 1.2

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

【讨论】:

  • 嗯,这看起来像是答案,但我需要做一些清理(多余的 log4j 乱码)以确保我没有交换问题。谢谢!
  • 它现在完成了旧 Axis 客户端代码所做的一切,没有回归。希望 Axis2 能够解决我遇到的其他一些问题。
  • 嘿,如果不是。用另一个问题试试你的运气:)
猜你喜欢
  • 2015-06-05
  • 2016-01-19
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 2013-09-23
  • 2021-09-19
  • 2017-04-27
  • 1970-01-01
相关资源
最近更新 更多