Java http请求设置代理

import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.cert.CertificateException;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;


public class HTTPProxy {
	
	public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {  
	    SSLContext sc = SSLContext.getInstance("SSLv3");  
	  
	    // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法  
	    X509TrustManager trustManager = new X509TrustManager() {  
	        @Override  
	        public void checkClientTrusted(  
	                java.security.cert.X509Certificate[] paramArrayOfX509Certificate,  
	                String paramString) throws CertificateException {  
	        }  
	  
	        @Override  
	        public void checkServerTrusted(  
	                java.security.cert.X509Certificate[] paramArrayOfX509Certificate,  
	                String paramString) throws CertificateException {  
	        }  
	  
	        @Override  
	        public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
	            return null;  
	        }  
	    };  
	  
	    sc.init(null, new TrustManager[] { trustManager }, null);  
	    return sc;  
	}
	
	public static HttpClientBuilder proxy(String hostOrIP, int port){  
	    // 依次是代理地址,代理端口号,协议类型    
	    HttpHost proxy = new HttpHost(hostOrIP, port, "http");    
	    DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);  
	    return HttpClients.custom().setRoutePlanner(routePlanner);  
	}  
	
	public static Map<String,String> sendGetDocker1(String url) throws ClientProtocolException, IOException, KeyManagementException, NoSuchAlgorithmException {
		//HttpHost proxy =new HttpHost("127.0.0.1",1080,"HTTP");
		//绕过证书验证,处理https请求  
	    //SSLContext sslcontext = createIgnoreVerifySSL();  
	      
	       // 设置协议http和https对应的处理socket链接工厂的对象  
	       Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()  
	           .register("http", PlainConnectionSocketFactory.INSTANCE)  
	           //.register("https", new SSLConnectionSocketFactory(sslcontext))  
	           .build();  
	       PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);  
	       HttpClients.custom().setConnectionManager(connManager); 
		
		CloseableHttpClient client = proxy("127.0.0.1", 1080).setConnectionManager(connManager).build();  
		//CloseableHttpClient httpclient = HttpClients.createDefault();
		HttpGet request =new HttpGet(url);
		//HttpPost httpPost = new HttpPost(url);  
		//request.setHeader("Accept", "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
		//request.setHeader("Connection", "keep-alive");  
		//request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0"); 
		CloseableHttpResponse response = client.execute(request);
		//获得起始行  
		System.out.println(response.getStatusLine().toString()+"\n");  
		//获得首部---当然也可以使用其他方法获取  
		org.apache.http.Header[] hs=response.getAllHeaders();  
		for(org.apache.http.Header h:hs){  
		    System.out.println(h.getName()+":\t"+h.getValue()+"\n");  
		}  
		try {  
            // 获取响应实体    
            HttpEntity entity = response.getEntity();  
            System.out.println("--------------------------------------");  
            // 打印响应状态    
            System.out.println(response.getStatusLine());  
            if (entity != null) {  
                // 打印响应内容长度    
                System.out.println("Response content length: " + entity.getContentLength());  
                // 打印响应内容    
                System.out.println("Response content: " + EntityUtils.toString(entity));  
            }  
            System.out.println("------------------------------------");  
        } finally {  
            response.close();  
        }  
		return null;
	}
	
	
	
	public static void main(String[] args) throws KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException, IOException{
			String urlValue="http://graph.facebook.com/v2.5/223495844457800/?fields=likes&access_token=EAACEdEose0cBANo9jZARJF7NBvEWkOR7NZA1rcZAojTuj3ofwcniFCa9AagZCD08t5WI4JN0GlRZBT23TZBaWzo0HgyQNygFY5EzZBIYTJ0ZBZCdp1r3WPZBjC3NsoZCTizkFIlR4cYxHw1T9DpdnV9Xzc8AqJIYKnS7WHnOYHxaI2sHSZAtMKTl2QXouYdj7ghJcZCcOVCpGjvjvB4S8NgKiyF3X";
			//String urlValue="http://www.baidu.com";
			//System.setProperty("http.proxyHost", "127.0.0.1");  
			//System.setProperty("http.proxyPort", "1080"); 
			//urlValue=URLEncoder.encode(urlValue);
			System.out.println(urlValue);
			System.out.println(sendGetDocker1(urlValue));
	}
}

你可能感兴趣的:(Java,工具类,java,http,proxy)