2012-01-27 73 views
2

我遇到访问由第三方提供的Web服务的问题。看看Axis2线迹,我可以在我的XML标记中间看到\ r \ n3ff8 \ r \ n,这会导致Axis2在尝试解析它们时遇到一些问题。你如何强制Axis2使用HTTP 1.0进行web服务调用?

据我所知,这与Axis2处理得不好的HTTP 1.1分块有关。

我遇到的问题是相同的问题this forum post

我怎样才能改变我的web服务代码,使其使用HTTP 1.0,以避免分块问题?据我所知,无论如何Axis默认使用CommonsHTTPSender,所以我不确定为什么上面链接的论坛帖子建议改变。

或者有更好的方法来解决这个问题吗?

回答

2

您可以直接关闭分块:

stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false); 

如果您愿意,您还可以通过axis2.xml配置文件控制这两件事。找到以下部分:

<transportSender name="http" 
    class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"> 
    <parameter name="PROTOCOL">HTTP/1.1</parameter> 
    <parameter name="Transfer-Encoding">chunked</parameter> 
</transportSender> 

您可以更改协议参数设置为“HTTP/1.0”,或删除传输编码参数来禁用分块。

0

发现了如何做到这一点,得到你,你会用它来调用服务,并在其后添加以下代码存根对象:

stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION, 
       org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_10);