轮询HTTP服务器在Java(发送HTTP GET请求重复)(Polling an Http ser

2019-10-30 11:22发布

我的Web服务器发送时,REST调用向它提出的一些信息。 我想不断地查询该服务器(发送HTTP GET请求反复,比如说,间隔5秒后),以检查是否有返回的信息进行任何更改。 什么是最有效的方式做到这一点? 能否请您提供一些代码的例子吗?

请注意,我只是想开发的客户端代码。

我一直在使用Java的Timer类如下尝试 -

Timer timer = new Timer();
timer.schedule(new TimerTask() {
    public void run() {
        //send HTTP requests
    }
}, 0, 3000); 

我不知道这是否是一种有效的方法。

Answer 1:

使用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); 

希望能帮助到你!



Answer 2:

好吧,我不会写代码,但我会告诉你用条件标题为您的要求。 无论是If-None-Matches应该与最近被上传ETag你回来,或者If-Modified-Since ,应与您最近响应的时间戳送上去。 这样,如果一切都没有改变,你得到一个304 Not Modified ,而不是整个请求主体。 这将节省服务器的一段时间,这意味着更少线的交通。 你可以阅读RFC 7232上它们是如何工作的详细信息。

需要注意的是大多数的框架不支持有条件的头。 谁拥有服务器将可能有,如果它不存在编写代码。



文章来源: Polling an Http server (sending http get requests repeatedly) in java
标签: java rest http