2014-03-28 6 views
6

Wenn ein CloseableHttpClient in Apache Httpclient Gebäude 4.3, kann ichApache Httpclient 4.3 SocketConfig.getSoTimeout() vs RequestConfig.getSocketTimeout()

SocketConfig.custom().setSoTimeout(soTimeout).build() 

verwenden und an die setDefaultSocketConfig() Methode meiner Verbindungs-Manager senden.

Ich kann auch

RequestConfig.custom().setSocketTimeout(socketTimeout).build() 

und sende es an die setDefaultRequestConfig() Methode meines http Client Builder verwenden.

Werden diese den gleichen End-Effekt oder verschiedene End-Effekte haben?

Antwort

4

Socket-Timeout in SocketConfig repräsentiert den Standardwert für neu erstellte Verbindungen. Dieser Wert kann für einzelne Anforderungen überschrieben werden, indem in RequestConfig ein Wert ungleich Null für Socket-Timeout festgelegt wird.

+0

Was passiert also, wenn es sowohl eine 'SocketConfig' als auch eine * Default *' RequestConfig' gibt? –

+0

SocketConfig gilt nur, wenn neue Sockets erstellt werden. Der Timeout-Wert für den Socket-Wert von RequestConfig überschreibt diesen Wert immer zum Zeitpunkt der Erstellung. – oleg

+0

Mit anderen Worten ausgedrückt scheint es, dass SocketConfigs Socket-Timeout _ immer noch für die anfängliche Socket-Erstellung verwendet wird, unabhängig von Socket-Timeout von RequestConfig. Wir haben ein Problem entdeckt, das Socket-Timeouts sowohl für SocketConfig als auch für RequestConfig benötigt. – Stano