少年阿賓

          那些青春的歲月

            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 閱讀(2379) 評論(0)  編輯  收藏 所屬分類: httpClient
          主站蜘蛛池模板: 许昌县| 建德市| 凌云县| 南开区| 五家渠市| 绵阳市| 临朐县| 谢通门县| 株洲县| 兴仁县| 深水埗区| 二连浩特市| 扶绥县| 怀来县| 山西省| 民县| 新邵县| 黎平县| 马尔康县| 潼南县| 隆昌县| 诸城市| 滁州市| 鄂托克旗| 黄骅市| 镇原县| 南乐县| 灌云县| 台州市| 台北县| 禹城市| 白水县| 江源县| 康马县| 梅河口市| 北碚区| 新源县| 五寨县| 依安县| 上虞市| 盐津县|