HTTP请求无需等待响应

时间:2016-05-30 17:51:33

标签: java http networking iot

是否可以在不等待响应的情况下发送HTTP请求?

我正在开发一个需要从传感器记录数据的物联网项目。在每个设置中,都有许多传感器和一个中央协调器(主要用Raspberry Pi实现),它从传感器收集数据并通过互联网将数据发送到服务器。

此记录每秒发生一次。因此,数据的发送应该很快发生,以便队列不会变得太大。如果请求不等待响应(如UDP),则会更快。

如果偶尔丢弃很少的数据包就可以了。

另外,请告诉我实现此方法的最佳方法。最好是Java。

服务器端使用PHP实现。

提前致谢!

编辑: 传感器是无线的,但他们使用的技术在发送给协调器时几乎没有(或没有)延迟。该协调员必须通过互联网发送数据。但是,假设互联网连接不好。因为这将在印度的偏远地区实施。

2 个答案:

答案 0 :(得分:1)

您正在寻找一个异步HTTP库,例如OkHttp。它允许指定异步执行的Callback(由第二个线程执行)。 因此,您的主线程继续执行。

答案 1 :(得分:1)

您可以将GET请求的TCP超时设置为小于一秒,并继续在线程中重新触发访问。为更多设备使用更多线程。

类似的东西:

HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("GET");
con.setConnectTimeout(1000); //set timeout to 1 second
if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
   ...
}

如果访问时间少于一秒,则将线程休眠1秒钟。如果将结果添加到线程安全队列,则可以在另一个线程上使用结果。确保处理异常。

您不能将UDP与HTTP一起使用,HTTP仅限于TCP。