java - 使用 "keepalive"连接从 Restful Web 服务轮询数据

标签 java android http rest

我正在开发一个 Android 应用程序,该应用程序从静态 Web 服务获取数据。

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

最佳答案

我在使用长轮询之前已经完成了此操作,其中我的 RESTful 调用会阻塞,直到超时或有需要回复的内容为止。无论哪种方式,调用客户端都会在响应(超时或有效)时再次重新调用 RESTful 服务。

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

再说一遍,我从未尝试过这种方式,所以我不知道。另外,我不确定这是否违反了 RESTful 服务的一些潜规则。我从未读过任何与这种方法相矛盾的内容。

关于java - 使用 "keepalive"连接从 Restful Web 服务轮询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956030/

相关文章:

java - Android TableLayout 内容不显示

java - AlertDialog If/Else 检查系统服务?

java - Spring 集成: how to read selected messages from a queue

java - 从 xml 中提取标签的值,其中 xml 消息以字符串形式出现

android - 浏览多个 Activity

java - Android - 尽管布局宽度设置为匹配父级,但仍包裹内容?

android - 如何在 Android 4.1 及更高版本中支持德语字符?

json - 如何在 Flutter 中将响应 JSON 转换为对象?

c# - WCF REST JSON 服务缓存

asp.net-mvc - '以另一个用户身份登录' MVC 4 Windows 身份验证