Java工具类-HttpUtil
1 package com.sh.util; 2 import java.io.IOException; 3 import java.io.UnsupportedEncodingException; 4 import java.net.URI; 5 import java.security.cert.X509Certificate; 6 import java.util.ArrayList; 7 import java.util.List; 8 import java.util.Map; 9 10 import javax.net.ssl.SSLContext; 11 import javax.net.ssl.TrustManager; 12 import javax.net.ssl.X509TrustManager; 13 14 import org.apache.http.HttpEntity; 15 import org.apache.http.HttpResponse; 16 import org.apache.http.NameValuePair; 17 import org.apache.http.client.ClientProtocolException; 18 import org.apache.http.client.HttpClient; 19 import org.apache.http.client.entity.UrlEncodedFormEntity; 20 import org.apache.http.client.methods.HttpGet; 21 import org.apache.http.client.methods.HttpPost; 22 import org.apache.http.conn.ClientConnectionManager; 23 import org.apache.http.conn.scheme.Scheme; 24 import org.apache.http.conn.scheme.SchemeRegistry; 25 import org.apache.http.conn.ssl.SSLSocketFactory; 26 import org.apache.http.impl.client.DefaultHttpClient; 27 import org.apache.http.message.BasicNameValuePair; 28 import org.apache.http.util.EntityUtils; 29 public class HttpsUtil { 30 /** 31 * 获取可信任https链接,以避免不受信任证书出现peer not authenticated异常 32 * 33 * @param base 34 * @return 35 */ 36 public static HttpClient wrapClient(HttpClient base) { 37 try { 38 SSLContext ctx = SSLContext.getInstance("TLS"); 39 X509TrustManager tm = new X509TrustManager() { 40 public void checkClientTrusted(X509Certificate[] xcs,String string) { 41 } 42 public void checkServerTrusted(X509Certificate[] xcs,String string) { 43 } 44 public X509Certificate[] getAcceptedIssuers() { 45 return null; 46 } 47 }; 48 ctx.init(null, new TrustManager[] { tm }, null); 49 SSLSocketFactory ssf = new SSLSocketFactory(ctx); 50 ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 51 ClientConnectionManager ccm = base.getConnectionManager(); 52 SchemeRegistry sr = ccm.getSchemeRegistry(); 53 sr.register(new Scheme("https", ssf, 443)); 54 return new DefaultHttpClient(ccm, base.getParams()); 55 } catch (Exception ex) { 56 ex.printStackTrace(); 57 return null; 58 } 59 } 60 61 /** 62 * http get请求 63 * @param url 请求地址 64 * @param headers 请求头 65 * @param pmap 请求参数 66 * @param ishttps 是否使用https true:使用 false:不使用 67 * @return 68 */ 69 public static String sendHttpsGet(String url,Map<String, String> headers,Map<String, String> pmap,boolean ishttps){ 70 HttpClient client = new DefaultHttpClient(); 71 if(ishttps){ 72 client = wrapClient(client); 73 } 74 // 实例化HTTP方法 75 HttpGet get = new HttpGet(); 76 for(String keyh : headers.keySet()) { 77 get.setHeader(keyh,headers.get(keyh)); 78 } 79 String params = ""; 80 for(String keyp : pmap.keySet()) { 81 params += "&" + keyp + "=" + pmap.get(keyp); 82 } 83 url += params.replaceAll("^&", "?"); 84 String result =""; 85 try { 86 get.setURI(new URI(url)); 87 HttpResponse response = client.execute(get); 88 result = EntityUtils.toString(response.getEntity()); 89 } catch (Exception e) { 90 // TODO: handle exception 91 } 92 try { 93 result=new String(result.getBytes("ISO-8859-1"),"utf-8"); 94 } catch (UnsupportedEncodingException e) { 95 // TODO Auto-generated catch block 96 e.printStackTrace(); 97 } 98 return result; 99 100 } 101 102 /** 103 * http post请求 104 * @param url 请求地址 105 * @param headers 请求头 106 * @param pmap 请求参数 107 * @param ishttps 是否使用https true:使用 false:不使用 108 * @return HttpEntity 使用org.apache.http.util.EntityUtils.toString()、com.alibaba.fastjson.JSON.parseObject()解析 109 */ 110 public static HttpEntity sendHttpsPost(String url,Map<String, String> headers,Map<String, String> pmap,boolean ishttps){ 111 HttpClient client = new DefaultHttpClient(); 112 if(ishttps){ 113 client = wrapClient(client); 114 } 115 HttpPost postrequest = new HttpPost(url); 116 HttpEntity entity = null; 117 try { 118 for(String keyh : headers.keySet()) { 119 postrequest.setHeader(keyh, headers.get(keyh)); 120 } 121 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 122 for(String key : pmap.keySet()) { 123 nvps.add(new BasicNameValuePair(key,pmap.get(key))); 124 } 125 126 postrequest.setEntity(new UrlEncodedFormEntity(nvps,"utf-8")); 127 HttpResponse execute = client.execute(postrequest); 128 entity = execute.getEntity(); 129 } catch (UnsupportedEncodingException e) { 130 e.printStackTrace(); 131 } catch (ClientProtocolException e) { 132 e.printStackTrace(); 133 } catch (IOException e) { 134 e.printStackTrace(); 135 } catch (Exception e) { 136 e.printStackTrace(); 137 } 138 return entity; 139 } 140 public static void main(String[] args) { 141 String t="{'uuid':'ec85f716-7647-439b-8d28-34cb21f95098','session':'4d590d61-b3e1-464f-b89a-03b69a90e040','label':null,'type':'pub','permanent':true,'data':null,'time_created':'2017-10-18T02:18:48.910656Z','live_days':15,'expire_in':'2017-11-02T02:18:48.910Z'}"; 142 net.sf.json.JSONArray jsonarr = net.sf.json.JSONArray.fromObject(t); 143 for(int i=0;i<jsonarr.size();i++){ 144 net.sf.json.JSONObject jsonObject = jsonarr.getJSONObject(i); 145 System.out.println(jsonObject.get("uuid")); 146 } 147 148 } 149 150 }