我有基於apache HttpClient的java應用程序。我想在不更改應用程序的情況下增加套接字超時(應用程序中沒有超時設置)。我怎樣才能通過系統屬性(或其他方式沒有更改應用程序)呢?通過系統屬性爲HttpClient設置套接字超時
2
A
回答
1
你可以使用Spring念想下面的系統屬性:
<bean id="yourBean" class="com.company.YourBean">
<property name="httpClientTimeout"
value="#{ systemProperties['httpclient.timeout'] }"/>
<!-- where httpclient.timeout is system variable-->
<!-- other properties goes here....-->
</bean>
一旦你的超時值,可以將超時設置爲HttpClient的。
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, timeout);
HttpConnectionParams.setSoTimeout(params, timeout);
DefaultHttpClient httpclient = new DefaultHttpClient(params);
HttpPost httpPost = new HttpPost(requestURL);
httpPost.setEntity(new StringEntity(requestBody));
HttpResponse response = httpclient.execute(httpPost);
從屬性文件讀取超時並將其傳遞給此代碼段。
+0
謝謝!但我想在不更改代碼的情況下增加套接字超時。 – cynepnaxa
1
不是直接的,但你可以在代碼中輕鬆地做到這一點:
httpClient.getParams().setParameter("http.socket.timeout",
Integer.getInteger("http.socket.timeout", <defaultValue>);
(注意Integer.getInteger(String, int)
從給定的系統屬性中讀取一個整數值)
+0
謝謝!但我想在不更改代碼的情況下增加套接字超時。 – cynepnaxa
相關問題
- 1. SSLSocketFactory設置握手超時和套接字屬性
- 2. 通過SO_RCVTIMEO套接字選項在Ruby中設置套接字超時
- 3. 使用MultiThreadedHttpConnectionManager爲同一個httpclient設置不同的套接字超時時間
- 4. 的HttpClient - 設置一個「全球性」套接字超時,並且每個請求
- 5. 的Apache的HttpClient 3.1套接字超時
- 6. 設置系統屬性
- 7. 套接字接收設置超時
- 8. 使用junitPlatform時設置系統屬性
- 9. -Dmaven.multiModuleProjectDirectory系統屬性爲沒有設置
- 10. 爲RCP程序設置系統屬性
- 11. 套接字recv的設置超時TCP
- 12. UDP套接字設置超時
- 13. 如何設置zmq套接字超時
- 14. 設置PrimeFaces套接字超時
- 15. 如何通過envirnmoent變量設置系統屬性?
- 16. 爲HTTPS連接設置https.protocols系統屬性的問題
- 17. 如何在訪問套接字時將fread設置爲超時?
- 18. 在netty通道上設置套接字超時
- 19. 通過系統調用在ruby中嵌套超時的問題
- 20. 通過字符串設置屬性
- 21. 通過套接字連接到遠程系統
- 22. 未設置SBT系統屬性
- 23. 如何設置系統屬性用C
- 24. 哪裏可以設置系統屬性
- 25. 從代碼設置系統屬性。
- 26. 通過CustomAction設置屬性
- 27. 將HttpClient設置爲太短的超時崩潰過程
- 28. libev將套接字設置爲阻止,沒有超時
- 29. 無法爲套接字connect()調用設置超時
- 30. codeigniter屬性/過濾系統
或其他方式 - >或其他方式不改變應用程序 – cynepnaxa