我从初始URI GET请求开始。我返回结果以及指向下一批记录的链接。我通过此循环直到检索所有记录。记录器显示HttpClientHelper在每个请求之后开始和停止时,性能似乎受到了打击。这是可以避免的吗?
Client client = new Client(new Context(), Protocol.HTTP);
ClientResource clientResource;
JsonRepresentation rep;
JSONObject object;
while(nextURI !=null)
{
clientResource = new ClientResource(nextURI);
//excessive HttpClientHelper start/stop triggered at next line
rep = new JsonRepresentation(service.get(MediaType.APPLICATION_JSON));
clientResource.setNext(client);
.
.
.
}
记录器显示以下内容:
2015年5月13日,上午9:30:52 org.restlet.ext.net.HttpClientHelper开始
INFO:启动HTTP客户端2015年5月13日,上午9:30:53
org.restlet.ext.net.HttpClientHelper开始
INFO:启动HTTP客户端2015年5月13日,上午9:30:53
org.restlet.ext.net.HttpClientHelper开始
INFO:启动HTTP客户端2015年5月13日,上午9:30:53
org.restlet.ext.net.HttpClientHelper停止
INFO:停止HTTP客户端2015年5月13日,上午9:30:53
org.restlet.ext.net.HttpClientHelper停止
INFO:停止HTTP客户端
最佳答案
我认为您调用方法setNext
为时已晚。您需要在任何HTTP调用之前以及在创建ClientResource
实例之后立即调用它,以防止客户端连接器在每次调用时启动。
您可以在下面找到一个示例:
Client client = new Client(new Context(), Protocol.HTTP);
for (int i = 0; i < 5; i++) {
ClientResource clientResource = new ClientResource("http://...");
clientResource.setNext(client);
Representation representation = clientResource.get();
(...)
}
在这种情况下,客户端连接器仅启动一次。
希望对您有帮助,
蒂埃里