axis2 webservices 411错误解决办法

错误:org.apache.axis2.AxisFault: Transport error: 411 Error: Length Required

可能会致使这个问题的缘由:java

一、访问地址通过端口映射apache

二、http协议版本不一样形成的,在HTTP1.0中,服务器就会省略response头中的Content-Length而持续写数据出去,当服务器挂了的话,它简单地断开链接。而经典的HTTP客户端会一直读数据直到碰到-1(传输结束的标识符)。为了处理这个问题,HTTP1.1中增长了一个特殊的header:Transfer-Encoding:chunked,容许响应response被分块chunked。每次向链接写数据的时候会先计算大小,最后在response的尾部以一个0长度的chunk块标志着这次传输的结束。即HTTP1.1支持chunked编码,它容许HTTP消息被分红多块后再进行传输。Chunking通常用在服务器响应response的时候,可是客户端也能够chunk大的请求request。即Chunk编码容许服务器在发送完Header后,发送更多的Body内容。服务器

解决方法:ui

axis2使用了Content- Encoding: chunked头 ,因此咱们在用axis2时为了不这个问题须要将chunk开关关掉,设置方法(java):编码

一、 在根据wsdl文件生成的客户端代码中加入_serviceClient.getOptions().setProperty(HTTPConstants.CHUNKED, false) 取消chunk限制,加入位置以下:get

 

二、在客户端建立链接时设置 以下:io

UserServiceStub stub = new UserServiceStub();
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,Boolean.FALSE);class

相关文章
相关标签/搜索