1. 程式人生 > >封裝HttpClient進行http請求與https請求

封裝HttpClient進行http請求與https請求

src empty one key-value fin finally 發送post請求 工具類 catch

一.https忽略證書

/**
 * 用於進行Https請求的HttpClient
 * 
 * @author joey
 *
 */
public class SSLClient {
    public static CloseableHttpClient createSSLClientDefault(){
        try {
            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                //信任所有
                public
boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext); return HttpClients.custom().setSSLSocketFactory(sslsf).build(); }
catch (KeyManagementException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } return HttpClients.createDefault(); } }

二.post與get請求

技術分享圖片
/**
* 利用HttpClient的工具類 * * @author Joey * */ public class HttpClientUtil { private static String charSet = "UTF-8"; private static CloseableHttpClient httpClient = null; private static CloseableHttpResponse response = null; /** * https的post請求 * @param url * @param jsonstr * @param charset * @return */ public static String doHttpsPost(String url, String jsonStr) { try { httpClient = SSLClient.createSSLClientDefault(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/json"); StringEntity se = new StringEntity(jsonStr); se.setContentType("text/json"); se.setContentEncoding(new BasicHeader("Content-Type", "application/json")); httpPost.setEntity(se); response = httpClient.execute(httpPost); if (response != null) { HttpEntity resEntity = response.getEntity(); if (resEntity != null) { return EntityUtils.toString(resEntity, charSet); } } } catch (Exception ex) { ex.printStackTrace(); }finally { if(httpClient != null){ try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } if(response != null){ try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * http的post請求(用於key-value格式的參數) * @param url * @param param * @return */ public static String doHttpPost(String url,Map<String,String> param){ try { //請求發起客戶端 httpClient = HttpClients.createDefault(); //參數集合 List<NameValuePair> postParams = new ArrayList<NameValuePair>(); //遍歷參數並添加到集合 for(Map.Entry<String, String> entry:param.entrySet()){ postParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } //通過post方式訪問 HttpPost post = new HttpPost(url); HttpEntity paramEntity = new UrlEncodedFormEntity(postParams,charSet); post.setEntity(paramEntity); response = httpClient.execute(post); StatusLine status = response.getStatusLine(); int state = status.getStatusCode(); if (state == HttpStatus.SC_OK) { HttpEntity valueEntity = response.getEntity(); String content = EntityUtils.toString(valueEntity); //jsonObject = JSONObject.fromObject(content); return content; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(httpClient != null){ try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } if(response != null){ try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * http的post請求(用於請求json格式的參數) * @param url * @param params * @return */ public static String doHttpPost(String url, String jsonStr) { try { httpClient = HttpClients.createDefault(); // 創建httpPost HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Accept", "application/json"); StringEntity entity = new StringEntity(jsonStr, charSet); entity.setContentType("text/json"); entity.setContentEncoding(new BasicHeader("Content-Type", "application/json")); httpPost.setEntity(entity); //發送post請求 response = httpClient.execute(httpPost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity responseEntity = response.getEntity(); String jsonString = EntityUtils.toString(responseEntity); return jsonString; } }catch(Exception e) { e.printStackTrace(); }finally { if(httpClient != null){ try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } if(response != null){ try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * http的Get請求 * @param url * @param param * @return */ public static String doHttpGet(String url,Map<String,String> param) { CloseableHttpClient httpclient = null; CloseableHttpResponse response = null; try { httpclient = HttpClients.createDefault(); if(param != null && !param.isEmpty()) { //參數集合 List<NameValuePair> getParams = new ArrayList<NameValuePair>(); for(Map.Entry<String, String> entry:param.entrySet()){ getParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } url +="?"+EntityUtils.toString(new UrlEncodedFormEntity(getParams), "UTF-8"); } //發送gey請求 HttpGet httpGet = new HttpGet(url); response = httpclient.execute(httpGet); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { return EntityUtils.toString(response.getEntity()); } }catch(Exception e) { e.printStackTrace(); }finally{ if(httpclient != null){ try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } if(response != null){ try { response.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } }
View Code

封裝HttpClient進行http請求與https請求