天天看點

Java---發送HTTPS請求

主要jar包:https://pan.baidu.com/s/1o7EvbZk

httpclient-4.2.5

httpcore-4.2.4

package com.util.wxutil;

import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

/**
 * 證書信任管理器(用于https請求)
 * Created by admin on 2017/11/14.
 */
public class MyX509TrustManager implements X509TrustManager {
    //檢查用戶端證書
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    }

    //檢查伺服器端證書
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    }

    //傳回受信任的x509數組
    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }
}
           
package com.util.wxutil;


import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.security.SecureRandom;

/**
 * Created by admin on 2017/11/14.
 */
public class HttpsREQUEST {
    /**
     * 發送https請求
     *
     * @param requestUrl
     *            請求位址
     * @param requestMethod
     *            請求方式(GET、POST)
     * @param outStr
     *            送出的資料
     * @return JSONObject(通過JSONObject.get(key)的方式擷取json對象的屬性值)
     */
    public static String HttpsRequest(String requestUrl, String requestMethod, String outStr) throws Exception{
//        建立 SSLContext
        SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE");
        TrustManager[] trustManagers = {new MyX509TrustManager()};
//        初始化
        sslContext.init(null,trustManagers,new SecureRandom());
//        擷取 sslSocketFactory 對象
        SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
//        設定目前執行個體使用

        StringBuffer buffer = null;
//      傳遞的URL
        URL url = new URL(requestUrl);
        HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
//      請求方式
        connection.setRequestMethod(requestMethod);
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setSSLSocketFactory(sslSocketFactory);
        connection.connect();

        if (outStr != null){
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(outStr.getBytes("utf-8"));
            outputStream.close();
        }

//        讀取服務端内容
        InputStream inputStream = connection.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        buffer = new StringBuffer();
        String line = null;
        while((line = bufferedReader.readLine()) != null){
            buffer.append(line);
        }
//        System.out.println(buffer.toString());
        return buffer.toString();
    }

}