1.设置参数,使用协议读取https public static void paramSettings(HttpClient httpclient){ try { //Secure Protocol implementation. SSLContext ctx = SSLContext.getInstance("SSL"); //Implementation of a trust manager for X509 certificates X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; X509HostnameVerifier hostnameVerifier = new X509HostnameVerifier(){ public boolean verify(String hostname, SSLSession session) { // TODO Auto-generated method stub return true; } public void verify(String arg0, SSLSocket arg1) throws IOException { // TODO Auto-generated method stub } public void verify(String arg0, X509Certificate arg1) throws SSLException { // TODO Auto-generated method stub } public void verify(String arg0, String[] arg1, String[] arg2) throws SSLException { // TODO Auto-generated method stub } }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx,hostnameVerifier); ClientConnectionManager ccm = httpclient.getConnectionManager(); //register https protocol in httpclient's scheme registry SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); sr.register(new Scheme("http", 80,PlainSocketFactory .getSocketFactory())); //set Time out httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT); httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, TIME_OUT); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (KeyManagementException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
2.doGet
public static String getHTTPSJsonRequest(String url, String userName, String password) { logger.info("HttpsUtil : getHTTPSResult start............"); String result = null; try { HttpClient httpclient = getHttpClient(); HttpGet httpget = new HttpGet(url); String authString = userName + ":" + password; String authStringEnc = new String(Base64.encode(authString .getBytes())); httpget.addHeader("Authorization", "Basic " + authStringEnc); httpget.addHeader("content-type", "application/json"); ResponseHandler responseHandler = new BasicResponseHandler(); result = httpclient.execute(httpget, responseHandler); logger.debug("HttpsUtil : getHTTPSResult;result = " + result); // Create a response handler httpget.releaseConnection(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } logger.info("HttpsUtil : getHTTPSResult end........"); return result; }
3.doPut
public static String putHTTPSJsonRequest(String url) { logger.info("HttpsUtil : putHTTPSResult start............"); logger.debug("url : " + url); String info = null; HttpClient httpclient = getHttpClient(); HttpPut httpPut = new HttpPut(url); try { HttpResponse httpresponse = httpclient.execute(httpPut); HttpEntity entity = httpresponse.getEntity(); info = EntityUtils.toString(entity, "UTF-8"); System.out.println("info = " + info); httpPut.addHeader("content-type", "application/json"); } catch (Exception e) { logger.debug("putData Exception url:{}", url, e); } finally { httpPut.releaseConnection(); } logger.info("HttpsUtil : putHTTPSResult end........"); // return info; return info; }
4.doPost
public static String postHTTPSJsonRequest(String url, Map<String, String> params) { logger.info("HttpsUtil : postHTTPSResult start............"); logger.debug("url : " + url); String response = null; String info = null; HttpClient httpclient = getHttpClient(); HttpPost httpPost = new HttpPost(url); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); if (params != null && params.size() > 0) { Iterator keysIterator = params.keySet().iterator(); while (keysIterator.hasNext()) { String key = (String) keysIterator.next(); String value = params.get(key); nameValuePairs.add(new BasicNameValuePair(key, value)); } } if (nameValuePairs != null && nameValuePairs.size() > 0) { httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); } HttpResponse httpresponse = httpclient.execute(httpPost); HttpEntity entity = httpresponse.getEntity(); info = EntityUtils.toString(entity, "UTF-8"); System.out.println("info = " + info); httpPost.addHeader("content-type", "application/json"); } catch (Exception e) { logger.debug("putData Exception url:{}", url, e); } finally { httpPost.releaseConnection(); } logger.info("HttpsUtil : postHTTPSResult end........"); return info; }
public static HttpClient getHttpClientWithSSL(String SSLPath) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, KeyManagementException, UnrecoverableKeyException{ HttpClient httpclient = new DefaultHttpClient(); KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); FileInputStream instream = new FileInputStream(new File(SSLPath)); try { trustStore.load(instream, "123456".toCharArray()); } finally { instream.close(); } SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore,"123456",trustStore); Scheme sch = new Scheme("https", socketFactory, 443); httpclient.getConnectionManager().getSchemeRegistry().register(sch); // httpclient.getConnectionManager().shutdown(); return httpclient; }