少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          實例一:

          package com.abin.lee.async;

          import org.apache.http.HttpResponse;
          import org.apache.http.client.methods.HttpPost;
          import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;
          import org.apache.http.nio.client.HttpAsyncClient;
          import org.apache.http.nio.reactor.IOReactorException;
          import org.junit.Test;

          import java.io.IOException;
          import java.util.concurrent.Future;

          /**
           * Created with IntelliJ IDEA.
           * User: abin
           * Date: 13-4-23
           * Time: 下午6:13
           * To change this template use File | Settings | File Templates.
           */
          public class HttpAsyncClientTest {
              private static final String HttpUrl="http://localhost:8100/MyThread/HttpClientPostProxyServlet";
              @Test
              public void testHttpAsyncClient() throws IOException {
                   HttpAsyncClient httpAsyncClient=new DefaultHttpAsyncClient();
                   httpAsyncClient.start();
                  HttpPost request=null;
                  try {
                      request=new HttpPost(HttpUrl);
                      Future<HttpResponse> future=httpAsyncClient.execute(request,null);
                      HttpResponse response=future.get();
                      System.out.println("response="+response);
                  }catch(Exception e){
                       e.printStackTrace();
                  }finally {
                      if(!request.isAborted()){
                          request.abort();;
                      }
                      httpAsyncClient.getConnectionManager().shutdown();
                  }

              }
          }








          實例二:

          package com.abin.lee.async;

          import org.apache.http.HttpResponse;
          import org.apache.http.client.methods.HttpGet;
          import org.apache.http.client.methods.HttpPost;
          import org.apache.http.concurrent.FutureCallback;
          import org.apache.http.impl.nio.client.DefaultHttpAsyncClient;
          import org.apache.http.nio.client.HttpAsyncClient;
          import org.junit.Test;

          import java.io.IOException;
          import java.util.concurrent.CountDownLatch;
          import java.util.concurrent.Future;

          /**
           * Created with IntelliJ IDEA.
           * User: abin
           * Date: 13-4-23
           * Time: 下午6:13
           * To change this template use File | Settings | File Templates.
           */
          public class HttpAsyncClientFutureCallBackTest {
              private static final String HttpUrl="http://localhost:8100/MyThread/HttpClientGetProxyServlet";
              private static final String HttpOneUrl="http://localhost:8100/MyThread/HttpClientGetOneServlet";
              private static final String HttpTwoUrl="http://localhost:8100/MyThread/HttpClientGetTwoServlet";
              @Test
              public void testHttpAsyncClientFutureCallBack() throws IOException {
                   HttpAsyncClient httpAsyncClient=new DefaultHttpAsyncClient();
                   httpAsyncClient.start();
                  HttpGet[] requests=null;
                  try {
                      requests=new HttpGet[]{new HttpGet(HttpUrl),new HttpGet(HttpOneUrl),new HttpGet(HttpTwoUrl)};
                      final CountDownLatch latch=new CountDownLatch(requests.length);
                      for(final HttpGet request:requests){
                          httpAsyncClient.execute(request,new FutureCallback<HttpResponse>() {
                              @Override
                              public void completed(HttpResponse httpResponse) {
                                  latch.countDown();
                                  System.out.println(request.getRequestLine()+"--->"+httpResponse.getStatusLine());
                                  //To change body of implemented methods use File | Settings | File Templates.
                              }

                              @Override
                              public void failed(Exception e) {
                                  latch.countDown();
                                  System.out.println(request.getRequestLine()+"-->"+e.getMessage());
                                  //To change body of implemented methods use File | Settings | File Templates.
                              }

                              @Override
                              public void cancelled() {
                                  latch.countDown();
                                  System.out.println(request.getRequestLine()+"--->"+" cancelled");
                                   //To change body of implemented methods use File | Settings | File Templates.
                              }
                          }) ;
                      }
                      latch.await();
                      System.out.println("shutting down");
                  }catch(Exception e){
                       e.printStackTrace();
                  }finally {
                      httpAsyncClient.getConnectionManager().shutdown();
                  }

              }
          }

          posted on 2013-04-28 16:26 abin 閱讀(2385) 評論(0)  編輯  收藏 所屬分類: httpClient
          主站蜘蛛池模板: 永康市| 桂林市| 成安县| 西安市| 攀枝花市| 炉霍县| 高邮市| 洛隆县| 商都县| 民权县| 丹凤县| 达孜县| 苗栗市| 图木舒克市| 竹北市| 北京市| 麟游县| 齐河县| 卢氏县| 嘉荫县| 山西省| 甘肃省| 三台县| 崇义县| 镇安县| 福州市| 江源县| 江津市| 长春市| 北海市| 温宿县| 方正县| 廉江市| 山西省| 桦川县| 永吉县| 左权县| 华池县| 铁岭县| 铁岭市| 河北区|