我的Web服务器发送时,REST调用向它提出的一些信息。 我想不断地查询该服务器(发送HTTP GET请求反复,比如说,间隔5秒后),以检查是否有返回的信息进行任何更改。 什么是最有效的方式做到这一点? 能否请您提供一些代码的例子吗?
请注意,我只是想开发的客户端代码。
我一直在使用Java的Timer类如下尝试 -
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
//send HTTP requests
}
}, 0, 3000);
我不知道这是否是一种有效的方法。
使用ApacheHttpClient
或类似新泽西州,RestEasy的等任何其他REST客户端框架来调用REST服务。
但在这里我用ApacheHttpClient调用REST服务,并得到响应,字符串
注意:请阅读有关的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);
希望能帮助到你!
好吧,我不会写代码,但我会告诉你用条件标题为您的要求。 无论是If-None-Matches
应该与最近被上传ETag
你回来,或者If-Modified-Since
,应与您最近响应的时间戳送上去。 这样,如果一切都没有改变,你得到一个304 Not Modified
,而不是整个请求主体。 这将节省服务器的一段时间,这意味着更少线的交通。 你可以阅读RFC 7232上它们是如何工作的详细信息。
需要注意的是大多数的框架不支持有条件的头。 谁拥有服务器将可能有,如果它不存在编写代码。