2

我必须使用在 .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);

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

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

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

WS-死星,确实。

4

1 回答 1

2

当您提到不同的内容类型标头时,我猜您的客户端尝试发送 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);
于 2009-06-24T21:52:26.843 回答