HttpClient請求https
阿新 • • 發佈:2019-01-10
宣告一個SSLClient繞過https驗證
傳送post請求import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; //用於進行Https請求的HttpClient public class SSLClient extends DefaultHttpClient{ public SSLClient() throws Exception{ super(); SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); } }
/** * 傳送post請求,獲取返回流資料 * @param header 請求頭 * @param params 請求引數 * @param url * @return */ private static InputStream doPost(Map<String,String> header,Map<String,String> param,String url){ HttpClient httpClient = null; HttpPost httpPost = null; String result = null; InputStream input = null; try{ httpClient = new SSLClient(); httpPost = new HttpPost(url); HttpGet httpGet = new HttpGet(url); for(String key : header.keySet()){ httpPost.setHeader(key, header.get(key)); } //設定引數 List<NameValuePair> list = new ArrayList<NameValuePair>(); Iterator iterator = param.entrySet().iterator(); while(iterator.hasNext()){ Entry<String,String> elem = (Entry<String, String>) iterator.next(); list.add(new BasicNameValuePair(elem.getKey(),elem.getValue())); } if(list.size() > 0){ UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,"utf-8"); httpPost.setEntity(entity); } HttpParams pr = new BasicHttpParams(); httpPost.setParams(pr); /*for(String key : header.keySet()){ httpGet.setHeader(key, header.get(key)); }*/ /*HttpResponse response = httpClient.execute(httpPost);*/ HttpResponse response = httpClient.execute(httpPost); if(response != null){ HttpEntity resEntity = response.getEntity(); if(resEntity != null){ input = resEntity.getContent(); } } }catch(Exception ex){ ex.printStackTrace(); } ByteArrayOutputStream out = new ByteArrayOutputStream(); return input; }