我的Web服务器在对其进行REST调用时发送一些信息。我想不断轮询这个服务器(在间隔5秒后重复发送HTTP GET请求)来检查返回的信息是否有任何变化。 最有效的方法是什么? 你能提供一些代码示例吗?
请注意,我只想开发客户端代码。
我尝试过使用java的Timer类,如下所示 -
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
//send HTTP requests
}
}, 0, 3000);
我不确定这是否是一种有效的方式。
答案 0 :(得分:3)
使用ApacheHttpClient
或任何其他REST客户端框架(如Jersey,RestEasy等)来调用REST服务。
但是我在这里使用ApacheHttpClient来调用Rest服务并以String的形式获取响应
注意:了解HttpCore和HttpClient
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
public void run()
{
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("Your Rest URL");
//add your headers if needed like this
httpGet.setHeader("Content-type", "application/xml");
httpGet.setHeader("Accept", "application/xml");
HttpResponse response = client.execute(httpGet);
HttpEntity httpEntity = response.getEntity();
//get response as String or what ever way you need
String response = EntityUtils.toString(httpEntity);
}
}, 0, 3000);
希望它有所帮助!
答案 1 :(得分:2)
好吧,我不会写代码,但我会告诉你为你的请求使用条件头。应该使用您回来的最新If-None-Matches
发送ETag
,或者应该使用您最近回复的时间戳发送If-Modified-Since
。这样,如果没有任何变化,您将返回304 Not Modified
而不是整个请求正文。它将节省服务器一段时间,这意味着更少的线路流量。您可以阅读RFC 7232了解有关其工作原理的更多信息。
请注意,大多数框架不支持条件标头。拥有服务器的人可能必须编写该代码(如果该代码尚不存在)。