对get post请求的封装

HttpUtil.java

package com.dhc.task.wx.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;

public class HttpUtil {

    /**
     * 获取一个http/https连接
     * @param urlStr
     * @param method
     * @return
     * @throws NoSuchAlgorithmException
     * @throws NoSuchProviderException
     * @throws IOException
     * @throws KeyManagementException
     */
    private static HttpsURLConnection getHttpConnection(String urlStr, String method) throws NoSuchAlgorithmException, NoSuchProviderException, IOException, KeyManagementException {
        URL url = new URL(urlStr);
        HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
        // 创建SSLContext对象,并使用我们指定的信任管理器初始化
        TrustManager[] tm = { new MyX509TrustManager() };
        SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
        sslContext.init(null, tm, new java.security.SecureRandom());
        // 从上述SSLContext对象中得到SSLSocketFactory对象
        SSLSocketFactory ssf = sslContext.getSocketFactory();

        httpUrlConn.setSSLSocketFactory(ssf);
        httpUrlConn.setDoOutput(true);
        httpUrlConn.setDoInput(true);

        // 设置请求方式(GET/POST)
        httpUrlConn.setRequestMethod(method);
        return httpUrlConn;

    }

    /**
     * http/https get请求
     * @param urlStr
     * @return
     * @throws Exception
     */
    public static String get(String urlStr) throws Exception {

        HttpsURLConnection httpUrlConn = getHttpConnection(urlStr, "GET");

        // 取得输入流
        InputStream inputStream = httpUrlConn.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        // 读取响应内容
        StringBuffer buffer = new StringBuffer();
        String str = null;
        while ((str = bufferedReader.readLine()) != null) {
            buffer.append(str);
        }
        bufferedReader.close();
        inputStreamReader.close();
        // 释放资源
        inputStream.close();
        httpUrlConn.disconnect();
        return buffer.toString();
    }

    /**
     * http/https post请求 返回响应结果
     * @param urlStr
     * @param body 
     * @return
     * @throws IOException
     * @throws NoSuchAlgorithmException
     * @throws NoSuchProviderException
     * @throws KeyManagementException
     */
    public static String Post(String urlStr, String body) throws IOException, NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException {
        HttpsURLConnection httpUrlConn = getHttpConnection(urlStr, "POST");;
        httpUrlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        httpUrlConn.connect();
        OutputStream os = httpUrlConn.getOutputStream();
        os.write(body.getBytes("UTF-8"));
        os.close();

        // 取得输入流
        InputStream inputStream = httpUrlConn.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        // 读取响应内容
        StringBuffer buffer = new StringBuffer();
        String str = null;
        while ((str = bufferedReader.readLine()) != null) {
            buffer.append(str);
        }
        bufferedReader.close();
        inputStreamReader.close();
        // 释放资源
        inputStream.close();
        httpUrlConn.disconnect();
        return buffer.toString();

    }

}

MyX509TrustManager.java

package com.dhc.task.wx.util;

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

/**
* 类名: MyX509TrustManager </br>
* 描述: 信任管理器 </br>
 */
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;
    }
}
注:参考网上博客+个人修改 可以发送https http的get post请求,接收到返回的body
原文地址:https://www.cnblogs.com/startnow/p/7676491.html