HttpClient 사용 예시 (post, json, 설정 에이전트)

11569 단어 HttpClient
JDK 의 자바 넷 패 키 지 는 HTTP 프로 토 콜 에 접근 하 는 기본 기능 을 제 공 했 지만, JDK 라 이브 러 리 자체 가 제공 하 는 기능 이 풍부 하지 않 습 니 다.HttpClient 는 Apache Jakarta Common 의 하위 프로젝트 로 효율 적 이 고 최신 이 며 기능 이 풍부 한 HTTP 프로 토 콜 을 지원 하 는 클 라 이언 트 프로 그래 밍 도 구 를 제공 하고 HTTP 프로 토 콜 의 최신 버 전 을 지원 합 니 다.요청, 응답 시간 초과 설정 을 포함 하여 몇 가지 일반적인 요청 방식 을 실현 했다.
필요 한 jar 패키지: httpclient - 4.5.7. jar (다른 버 전도 가능 합 니 다. 4.0 이상 의 버 전 을 사용 하 는 것 이 좋 습 니 다. 버 전의 실현 방식 에 따라 일부 차이 가 있 기 때 문 입 니 다).
홈 페이지 다운로드 주소:http://hc.apache.org/downloads.cgi
내 자원 라 이브 러 리 다운로드 주소: httpclient - 4.5.7. jar
1. 일반 post 요청;
2. json 형식 매개 변수 요청;
3. 프 록 시 설정 요청;
package com.common.utils.http;

import java.io.IOException;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
 * httpClient  
 * @author zhaoheng
 * @date   2019-03-07
 */
public class HttpReq {
	
	/**
	 * POST  
	 * @param url				    
	 * @param socketTimeout		      ,      ,    ;
	 * 							        ,           ,         
	 * @param param		    map  
	 * @return
	 */
	 public static String doPost(String url, int socketTimeout, Map param) {
	        //   Httpclient  
	        CloseableHttpClient httpClient = HttpClients.createDefault();
	        CloseableHttpResponse response = null;
	        String resultString = "";
	        try {
	            //   Http Post  
	            HttpPost httpPost = new HttpPost(url);
	            
	            //       
	            RequestConfig requestConfig = RequestConfig.custom()  
	                    .setConnectTimeout(5000)						//         ,    。
	                    .setConnectionRequestTimeout(1000)  			//             ,    。
	                    .setSocketTimeout(socketTimeout).build();    	//            ,    ;         ,           ,         。
	            httpPost.setConfig(requestConfig);
	            
	            //       
	            if (param != null) {
	                List paramList = new ArrayList();
	                for (String key : param.keySet()) {
	                    paramList.add(new BasicNameValuePair(key, param.get(key)));
	                }
	                //     
	                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
	                httpPost.setEntity(entity);
	            }
	            //   http  
	            response = httpClient.execute(httpPost);
	            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
	        } catch (Exception e) {
	            e.printStackTrace();
	            if (e instanceof SocketTimeoutException) {
					System.out.println("    !!!");
				}
	        } finally {
	        	//     
	            try {
	            	if (null != httpClient) {
	            		httpClient.close();
					}
	            	if (null != response) {
	            		response.close();
					}
	            } catch (IOException e) {
	                
	                e.printStackTrace();
	            }
	        }

	        return resultString;
	    }
	 
	 /**
	  * POST  ( json  )
	  * @param url					    
	  * @param socketTimeout		      ,      ,    ;
	  * 							        ,           ,         
	  * @param jsonParam	json  
	  * @return
	  */
	 public static String doPostJson(String url, int socketTimeout, String jsonParam) {
	        //   Httpclient  
	        CloseableHttpClient httpClient = HttpClients.createDefault();
	        CloseableHttpResponse response = null;
	        String resultString = "";
	        try {
	            //   Http Post  
	            HttpPost httpPost = new HttpPost(url);
	            
	            //       
	            RequestConfig requestConfig = RequestConfig.custom()  
	                    .setConnectTimeout(5000)						//         ,    。
	                    .setConnectionRequestTimeout(1000)  			//             ,    。
	                    .setSocketTimeout(socketTimeout).build();    	//            ,    ;         ,           ,         。
	            httpPost.setConfig(requestConfig);
	            
	            //       
	            StringEntity entity = new StringEntity(jsonParam, ContentType.APPLICATION_JSON);
	            httpPost.setEntity(entity);
	            //   http  
	            response = httpClient.execute(httpPost);
	          
	            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
	        } catch (Exception e) {
	            e.printStackTrace();
	            if (e instanceof SocketTimeoutException) {
					System.out.println("    !!!");
				}
	        } finally {
	        	//     
	            try {
	            	if (null != httpClient) {
	            		httpClient.close();
					}
	            	if (null != response) {
	            		response.close();
					}
	            } catch (IOException e) {
	                
	                e.printStackTrace();
	            }
	        }

	        return resultString;
	    }

	 /**
	  *       POST  ( json  )
	  * @param proxyIp	  IP
	  * @param port		   
	  * @param tcp		  ( :http、https)
	  * @param url		    
	  * @param socketTimeout		      ,      ,    ;
	  * 							        ,           ,         
	  * @param jsonParam	json  
	  * @return
	  */
	 public static String doProxyPostJson(String proxyIp,int port,String tcp, String url,int socketTimeout, String jsonParam) {
		 	//    IP、  、  
	        HttpHost proxy = new HttpHost(proxyIp, port, tcp);

	        //          
	        RequestConfig defaultRequestConfig = RequestConfig.custom().setProxy(proxy).build();

	        //   CloseableHttpClient  
	        CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
	        
	        CloseableHttpResponse response = null;
	        String resultString = "";
	        try {
	            //   Http Post  
	            HttpPost httpPost = new HttpPost(url);
	            
	            //       
	            RequestConfig requestConfig = RequestConfig.custom()  
	                    .setConnectTimeout(5000)						//         ,    。
	                    .setConnectionRequestTimeout(1000)  			//             ,    。
	                    .setSocketTimeout(socketTimeout).build();    	//            ,    ;         ,           ,         。
	            httpPost.setConfig(requestConfig);
	            
	            //       
	            StringEntity entity = new StringEntity(jsonParam, ContentType.APPLICATION_JSON);
	            httpPost.setEntity(entity);
	            //   http  
	            response = httpClient.execute(httpPost);
	          
	            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
	        } catch (Exception e) {
	            e.printStackTrace();
	            if (e instanceof SocketTimeoutException) {
					System.out.println("    !!!");
				}
	        } finally {
	        	//     
	            try {
	            	if (null != httpClient) {
	            		httpClient.close();
					}
	            	if (null != response) {
	            		response.close();
					}
	            } catch (IOException e) {
	                
	                e.printStackTrace();
	            }
	        }

	        return resultString;
	    }
	 
	 	/**
	 	 *         POST  
	 	 * @param proxyIp	  IP
	 	 * @param port		   
	 	 * @param tcp		  ( :http、https)
	 	 * @param url		    
	 	 * @param socketTimeout		      ,      ,    ;
	 	 * 							        ,           ,         
	 	 * @param param		    map  
	 	 * @return
	 	 */
		 public static String doProxyPost(String proxyIp,int port,String tcp, String url, int socketTimeout, Map param) {
			 
			 	//    IP、  、  
		        HttpHost proxy = new HttpHost(proxyIp, port, tcp);

		        //          
		        RequestConfig defaultRequestConfig = RequestConfig.custom().setProxy(proxy).build();

		        //   CloseableHttpClient  
		        CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
		        CloseableHttpResponse response = null;
		        String resultString = "";
		        try {
		            //   Http Post  
		            HttpPost httpPost = new HttpPost(url);
		            
		            //       
		            RequestConfig requestConfig = RequestConfig.custom()
		                    .setConnectTimeout(5000)						//         ,    。
		                    .setConnectionRequestTimeout(1000)				//             ,    。
		                    .setSocketTimeout(socketTimeout).build();    	//            ,    ;         ,           ,         。
		            httpPost.setConfig(requestConfig);
		            
		            //       
		            if (param != null) {
		                List paramList = new ArrayList();
		                for (String key : param.keySet()) {
		                    paramList.add(new BasicNameValuePair(key, param.get(key)));
		                }
		                //     
		                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
		                httpPost.setEntity(entity);
		            }
		            //   http  
		            response = httpClient.execute(httpPost);
		            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
		        } catch (Exception e) {
		            e.printStackTrace();
		            if (e instanceof SocketTimeoutException) {
						System.out.println("    !!!");
					}
		        } finally {
		        	//     
		            try {
		            	if (null != httpClient) {
		            		httpClient.close();
						}
		            	if (null != response) {
		            		response.close();
						}
		            } catch (IOException e) {
		                
		                e.printStackTrace();
		            }
		        }

		        return resultString;
		    }
	 
	 /**
	  *     
	  * @param args
	  */
	 public static void main(String[] args) {
		 
		 //   post  
		 String url = "http://127.0.0.1:8080/download/TestCon/test01";
		 Map param = new HashMap();
			param.put("name", "welcome");
		 String result = HttpReq.doPost(url,3000, param);
		 System.out.println("result:"+result);
		 
		 //   json    
		 String url2 = "http://127.0.0.1:8080/download/TestCon/test02";
		 String jsonParam = "{\"fileName\":\"httpClient.jar\",\"fileSize\":\"1024\"}";
		 String result2 = HttpReq.doPostJson(url2,5000, jsonParam);
		 System.out.println("result2:"+result2);

		 //       
		 String url3 = "https://www.baidu.com";
		 Map param3 = new HashMap();
		 String result3 = HttpReq.doProxyPost("  ip", 8080, "http", url3,5000, param3);
		 System.out.println(result3);
	 }
}

좋은 웹페이지 즐겨찾기