zoukankan      html  css  js  c++  java
  • HttpAsyncClient 的简单使用

    下载地址:http://hc.apache.org/downloads.cgi

    在NetBeans中导入以下jar文件:

    1:一次请求:

     public static void oneReuest(){
            final CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();
            httpClient.start();
            final HttpGet request = new HttpGet("http://www.apache.org/");
            final Future future = httpClient.execute(request, null);
            try {
                HttpResponse response = (HttpResponse) future.get();
                System.out.println("Response:" + response.getStatusLine());
                System.out.println("Shutting down");
            } catch (Exception ex) {
                Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
            }finally{
                try {
                    httpClient.close();
                } catch (IOException ex) {
                    Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            
            System.out.println("执行完毕");
        }

    2:多次异步请求:

     public static void moreRequest(){
            final RequestConfig requestConfitg = RequestConfig.custom()
                    .setSocketTimeout(3000)
                    .setConnectTimeout(3000).build();
            
            final CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom()
                    .setDefaultRequestConfig(requestConfitg)
                    .build();
            
            httpClient.start();
            
            final HttpGet[] requests = new HttpGet[]{
                new HttpGet("http://www.apache.org/"),
                new HttpGet("http://www.baidu.com/"),
                new HttpGet("http://www.oschina.net/")
            };
            
            final CountDownLatch latch = new CountDownLatch(requests.length);
            for(final HttpGet request: requests){
                
                    httpClient.execute(request, new FutureCallback(){
                        @Override
                        public void completed(Object obj) {
                           final HttpResponse response = (HttpResponse)obj;
                           latch.countDown();
                           System.out.println(request.getRequestLine() + "->" + response.getStatusLine());
                        }
    
                        @Override
                        public void failed(Exception excptn) {
                            latch.countDown();
                            System.out.println(request.getRequestLine() + "->" + excptn);
                        }
    
                        @Override
                        public void cancelled() {
                            latch.countDown();
                            System.out.println(request.getRequestLine() + "cancelled");
                        }
                    });
             }       
            
            try {
                latch.await();
                System.out.println("Shutting Down");
            } catch (InterruptedException ex) {
                Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
            }finally{
                try {
                    httpClient.close();
                } catch (IOException ex) {
                    Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            System.out.println("Finish!");
        }

    运行结果:

    run:
    GET http://www.baidu.com/ HTTP/1.1->HTTP/1.1 200 OK
    GET http://www.oschina.net/ HTTP/1.1->HTTP/1.1 200 OK
    GET http://www.apache.org/ HTTP/1.1->HTTP/1.1 200 OK
    Shutting Down
    Finish!
    成功构建 (总时间: 2 秒)

    可以看出是异步执行的!不是按照我们传入的URL参数顺序执行的!
  • 相关阅读:
    Java之正則表達式【使用语法】
    2015年创业中遇到的技术问题:71-80
    2015年创业中遇到的技术问题:71-80
    Kinect小小玩偶游戏----小小潜水员
    微信开发学习日记(三):6点经验
    微信开发学习日记(二):3个案例
    2015年创业中遇到的技术问题:61-70
    2015年创业中遇到的技术问题:61-70
    2次创业经验谈(想创业想做事的人不要错过)
    Kinect舒适区范围--UE4 的Blueprint测试范例
  • 原文地址:https://www.cnblogs.com/yshyee/p/3506367.html
Copyright © 2011-2022 走看看