少年阿宾

那些青春的岁月

  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 阅读(2372) 评论(0)  编辑  收藏 所属分类: httpClient

只有注册用户登录后才能发表评论。


网站导航: