2017-04-19 61 views
0

我正在使用 org.apache.http.impl.client.CloseableHttpClient 發送請求。每當標題之一的尺寸較大(約103452字節),我得到一個:java.net.SocketException:連接重置,大型HTTP標頭

java.net.SocketException異常:連接復位

的連接可能不被重置服務器,因爲其他客戶端來自其他Java應用程序(可能使用spring OAUTH/REST客戶端)似乎能夠在發送類似大型標題的同時使用該服務。

即使正確的解決方法是爲了避免首先發送這樣一個大頭的需要,有沒有配置org.apache.http.impl.client.CloseableHttpClient,可以防止它在大頭上崩潰?

客戶端內置有:

HttpClientBuilder.create().useSystemProperties().build() 
+0

你有多確定服務器是否拒絕請求? HTTP規範沒有規定限制,我不相信Apache客戶端強加一個默認配置。但是,網絡服務器呢...有關詳細信息,請參閱https://stackoverflow.com/questions/686217/maximum-on-http-header-values。請注意,Web服務器強加的限制是所有標題的組合大小,而不是單個標題。 – Alex

+0

好點。我會確認 – erjoalgo

+0

您能否將您的評論添加爲答案?我嘗試將請求發送到本地服務器:'sudo nc -l 80'。帶有100Kb頭的請求被apache http客戶端發送得非常好。同時,我嘗試通過'curl'客戶端向真實服務器發送同樣的請求,並且我得到了一個'curl:(56)Proxy CONNECT aborted''。所以即使代理可能會拒絕這麼大的頭部大小。 – erjoalgo

回答

0

如何確保你的服務器沒有拒絕請求?

HTTP規範沒有強加限制,我不相信Apache客戶端強加一個默認配置。

但是,網絡服務器的確...請參閱Maximum on http header values?瞭解一些詳細信息。請注意,Web服務器強加的限制是所有標題的組合大小,而不是單個標題。

相關問題