0

我正在开发一个从宁静的网络服务中获取数据的安卓应用程序。

我正在考虑实现这一点的最佳方法,我的代码正在运行,但我确信它可以被优化。这是我当前的代码状态:我正在使用调度程序从服务调用 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标头?

4

1 回答 1

1

我在使用长轮询之前已经这样做了,在这种轮询中,我的 RESTful 调用会阻塞,直到出现超时或需要回复。无论哪种方式,调用客户端都会在任一响应(超时或有效)时再次调用 RESTful 服务。

我不确定您如何使用 keepalive 标头,但看起来您要做的就是发送它,然后简单地保持连接打开。在您的服务器端 java 代码中,您将获得响应的输出缓冲区并开始向下发送内容。在客户端,获取输入缓冲区(不知道这在 Android 中是如何发生的,但我的印象是它的 Java 代码,所以有很多方法可以做到这一点)并开始阅读。在某些时候,我认为您需要强制关闭连接,只是因为您不想无限期地保持打开状态。

再说一次,我从来没有这样尝试过,所以我不知道。另外,我不确定这是否违反了 RESTful 服务的一些潜规则。我从来没有读过任何与这种方法相矛盾的东西。

于 2012-10-18T13:50:41.407 回答