我从一个初始的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 start
信息:启动HTTP客户端2015年5月13日上午9:30:53 org.restlet.ext.net.HttpClientHelper start
信息:启动HTTP客户端2015年5月13日上午9:30:53 org.restlet.ext.net.HttpClientHelper start
信息:启动HTTP客户端2015年5月13日上午9:30:53 org.restlet.ext.net.HttpClientHelper stop
信息:停止HTTP客户端2015年5月13日上午9:30:53 org.restlet.ext.net.HttpClientHelper stop
信息:停止HTTP客户端
答案 0 :(得分:1)
我认为您调用方法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();
(...)
}
在这种情况下,客户端连接器仅启动一次。
希望它可以帮到你, 亨利