我正在开发一个从安静的Web服务中获取数据的Android应用程序。
我正在考虑实现这个的最佳方法,我的代码正在运行,但我确信它可以进行优化。 这是我当前的代码状态: 我正在使用调度程序从服务调用restResource。 坏的部分是每个请求都打开和关闭连接。 (其余资源保存实时数据(我必须每秒获取一次),当它为空时它会返回一个空数组)
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
response = convertStreamToString(instream);
instream.close();
}
如何使用随响应返回的keepalive标头?
答案 0 :(得分:1)
我在使用长轮询之前已经这样做了,其中我的RESTful调用阻塞,直到有超时或者有回复的东西。无论哪种方式,调用客户端都会在任一响应(超时或有效)上再次重新调用RESTful服务。
我不确定如何使用keepalive标头,但看起来你要做的就是发送它,然后简单地保持连接打开。在服务器端的Java代码中,您将获得响应的输出缓冲区并开始向下发送内容。在客户端,获取输入缓冲区(不确定这在Android中是如何发生的,但我的印象是它的Java代码,所以有很多方法可以做到这一点)并开始阅读。在某些时候,我认为你需要强制关闭连接,只是因为你不想让它无法打开。
同样,我从未尝试过这种方式,所以我不知道。此外,我不确定这是否打破了RESTful服务的一些未说明的法律。我从未读过与此方法相矛盾的任何内容。