代码之家  ›  专栏  ›  技术社区  ›  Roboprog

如何覆盖.NET Web服务的axis2请求头?

  •  2
  • Roboprog  · 技术社区  · 16 年前

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

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

    由于最初的ApacheAxis项目现在看起来是未维护的,并且在解析服务的某些响应时遇到了一些问题,所以我将客户机转换为使用最新(1.5)版本的Axis2。现在,.NET服务甚至无法识别我的请求。

    我设法关闭了“chunking”(chunking)(其中“stub”是wsdl2java生成的mumblestub类型的变量,我在这里将几行代码显示为一行可怕的代码):

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

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

    我注意到axis(“1”)请求有一个不同的内容类型头(text/xml,vs application/soap xml),我想知道如何更改这个请求头,如果这实际上是问题所在。

    另外,还有其他人遇到过这个问题吗?问题是真的吗(在这里不可播放,因为它看起来像是博客引擎的“元素注入”)…XML版本-“1.0”…XML meta intro标记“axis2添加到请求的开头?

    是的,死亡之星。

    1 回复  |  直到 16 年前
        1
  •  2
  •   jitter    16 年前

    正如您提到的不同内容类型的头一样,我想您的客户机尝试发送SOAP 1.2请求,而第三方应用程序只理解SOAP 1.1。

    尝试更改使用的SOAP版本,因为默认情况下,Afaik Axis2使用SOAP 1.2

    stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
    
    推荐文章