首页 > 编程 > Java > 正文

java实现HttpClient异步请求资源的方法

2019-11-26 15:05:27
字体:
来源:转载
供稿:网友

本文实例讲述了java实现HttpClient异步请求资源的方法。分享给大家供大家参考。具体实现方法如下:

package demo;import java.util.concurrent.CountDownLatch;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;import org.apache.http.nio.client.HttpAsyncClient;import org.apache.http.nio.concurrent.FutureCallback;import org.apache.http.nio.reactor.IOReactorException;public class Main { /**  * @param args  * @throws IOReactorException   * @throws InterruptedException   */ public static void main(String[] args) throws IOReactorException, InterruptedException {  final HttpAsyncClient httpclient = new DefaultHttpAsyncClient();  httpclient.start();  HttpGet[] requests = new HttpGet[] {    new HttpGet("http://www.apache.org/"),    new HttpGet("https://www.verisign.com/"),    new HttpGet("http://www.google.com/")  };  final CountDownLatch latch = new CountDownLatch(requests.length);  try {   for (final HttpGet request: requests) {    httpclient.execute(request, new FutureCallback<HttpResponse>() {     public void completed(final HttpResponse response) {      latch.countDown();      System.out.println(request.getRequestLine() + "->" + response.getStatusLine());     }     public void failed(final Exception ex) {      latch.countDown();      ex.printStackTrace();     }     public void cancelled() {      latch.countDown();     }    });   }   System.out.println("Doing...");  }finally {   latch.await();   httpclient.shutdown();  }  System.out.println("Done"); }}

希望本文所述对大家的java程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表