4

我使用 unirest 作为 API 的调用方法。但是在我的代码中实现它并在服务器日志中查看后,它总是调用关闭过期连接。

这是我的代码:

public static JSONArray getJsonArray(String url, Map<String, Object> filter){
    GetRequest request = null;
    jArr= null;  
    try {
        Unirest.setTimeouts(10000, 10000);
        request = Unirest.get(url).header("accept", "application/json");

        if (filter != null){
            request.queryString(filter);
        }

        jArr = request.asJson().getBody().getArray();
    } catch (Exception ex){
        logger.debug(ex);
    }finally{
        //Unirest.shutdow();
    }
    return jArr;
}

服务器日志:

 14:05:25,954 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing expired connections
 14:05:25,954 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing connections idle longer than 30 SECONDS
 14:05:26,529 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing expired connections
 14:05:26,529 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing connections idle longer than 30 SECONDS
 14:05:26,826 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing expired connections
 14:05:26,826 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing connections idle longer than 30 SECONDS
 14:05:26,835 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing expired connections
 14:05:26,835 INFO  [STDOUT] [PoolingHttpClientConnectionManager] : Closing connections idle longer than 30 SECONDS

我尝试在代码中使用unirest.shutdown()。日志变得正常,但之后我无法再次使用 Unirest 代码。我发现这是停止的。

是在调用Unirest.shutdow()或修复日志后启动它的方法吗?

4

1 回答 1

2

您可以使用com.mashape.unirest.http.options.Options.refresh();再次启用 Unirest 或仅修改 log4j 以从 DEBUG 更改 org.apache.http.impl.conn.PoolingHttpClientConnectionManager 的日志级别。

<logger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager">
    <level value="WARN"/>
    <appender-ref ref="MyLogFile"/>
</logger>
于 2016-03-09T02:16:11.713 回答