2015-10-22 112 views
1

我正在使用Apache HTTP組件向不屬於我的服務器發送POST請求(因此我無法修改其配置)。org.apache.http.HttpException:不支持的內容編碼:無

作爲對我的迴應,服務器設置了Content-Encoding: none標題,導致org.apache.http.HttpException: Unsupported Content-Coding: none例外。

我在StackOverflow的某處發現我可以使用HttpClients.custom().disableContentCompression().build()來禁用RequestAcceptEncodingResponseContentEncoding攔截器,因此使異常不會被拋出。但是,我不想在全球範圍內以這種方式重新配置我的HttpClient

有沒有這個問題的任何解決方法,而無需添加更改HttpClient

作爲說明,我沒有必要閱讀響應主體,因爲它是空的。我只需要能夠讀取響應代碼(即200 OK)。

謝謝你的時間。

+0

服務器的響應無效。你有報告錯誤嗎? –

+0

不幸的是,在這種情況下報告錯誤並不會有幫助,因爲服務器的所有者不會修復它。正如我所瞭解的那樣,我確信這一點。我必須在我身邊找到一些解決方法。 – kazy

+0

我已經決定,我會簡單地把HttpClient.execute()放在try catch中,用空的catch塊來處理那個異常,直到找到真正的解決方案。 – kazy

回答

0

終於在幾個月後,我發現這個問題的解決方案!

解決方法是使用攔截器修復錯誤的Content-Encoding標頭see this blog entry

0

我遇到了類似的問題。一個簡單的解決方法是在http客戶端構建器中禁用壓縮。

HttpClientBuilder clientBuilder = HttpClients.custom(); 
clientBuilder.disableContentCompression(); 
HttpClient client = clientBuilder.build();