首页 > Web开发 > 详细

HttpClient设置代理,超时,以及得到cookies

时间:2016-02-03 18:18:57      阅读:436      评论:0      收藏:0      [点我收藏+]
import java.net.URI;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;


public class Http {

    // 如何通过一个代理发送一个HTTP请求。
    public void action1() throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpHost target = new HttpHost("ip1", 8080, "https");
            HttpHost proxy = new HttpHost("ip2", 8080, "http");

            RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
            HttpGet request = new HttpGet("/");
            request.setConfig(config);

            System.out.println("Executing request " + request.getRequestLine()
                    + " to " + target + " via " + proxy);

            httpclient.execute(target, request);
        } finally {
            httpclient.close();
        }
    }

    // 得到cookies。
    public void action2() throws Exception {
        BasicCookieStore cookieStore = new BasicCookieStore();
        CloseableHttpClient httpclient = HttpClients.custom()
                .setDefaultCookieStore(cookieStore).build();
         try {
//                HttpGet httpget = new HttpGet("https://someportal/?username=username&password=password");
//                CloseableHttpResponse response = httpclient.execute(httpget);
                HttpUriRequest login = RequestBuilder.post()
                    .setUri(new URI("https://www.baidu.com/"))
                    .addParameter("username", "username")
                    .addParameter("password", "password").build();
                httpclient.execute(login);
    
                System.out.println("请求所得的 cookies:");
                List<Cookie> cookies = cookieStore.getCookies();
                if (cookies.isEmpty()) {
                    System.out.println("None");
                } else {
                    for (int i = 0; i < cookies.size(); i++) {
                        System.out.println("- " + cookies.get(i).toString());
                    }
                }
            
        } finally {
            httpclient.close();
        }

    }
    // 设置超时。
        public void action3() throws Exception {
            CloseableHttpClient httpclient = HttpClients.createDefault();
            RequestConfig requestConfig = RequestConfig.custom()
                    .setSocketTimeout(1000)
                    .setConnectTimeout(1000)
                    .build();
            HttpGet httpget1 = new HttpGet("https://www.baidu.com");
            httpget1.setConfig(requestConfig);
            httpclient.execute(httpget1);
        }
}

 

HttpClient设置代理,超时,以及得到cookies

原文:http://www.cnblogs.com/mcahkf/p/5180215.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!