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

相關文章
相關標籤/搜索