是否可以在不等待响应的情况下发送HTTP请求?
我正在开发一个需要从传感器记录数据的物联网项目。在每个设置中,都有许多传感器和一个中央协调器(主要用Raspberry Pi实现),它从传感器收集数据并通过互联网将数据发送到服务器。
此记录每秒发生一次。因此,数据的发送应该很快发生,以便队列不会变得太大。如果请求不等待响应(如UDP),则会更快。
如果偶尔丢弃很少的数据包就可以了。
另外,请告诉我实现此方法的最佳方法。最好是Java。
服务器端使用PHP实现。
提前致谢!
编辑: 传感器是无线的,但他们使用的技术在发送给协调器时几乎没有(或没有)延迟。该协调员必须通过互联网发送数据。但是,假设互联网连接不好。因为这将在印度的偏远地区实施。
答案 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。