有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过系统属性为HttpClient设置javasocket超时

我有基于ApacheHttpClient的java应用程序。我想在不更改应用程序的情况下减少socket超时(应用程序中没有可用的超时设置)。如何通过系统属性(或其他不改变应用程序的方式)实现


共 (2) 个答案

  1. # 1 楼答案

    不直接,但您可以通过代码轻松完成:

    httpClient.getParams().setParameter("http.socket.timeout",
        Integer.getInteger("http.socket.timeout", <defaultValue>);
    

    (注意Integer.getInteger(String, int)从给定的系统属性中读取一个整数值)

  2. # 2 楼答案

    您可以使用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);
    

    从属性文件中读取超时,并将其传递给此代码段