我有基于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