• 对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
  • 相关阅读:
    2-2. 然后是几点(15)
    2-1. 厘米换算英尺英寸(15)
    2-0. 整数四则运算(10)
    忙碌的下半学期
    ACM 第十九天
    ACM 第十八天
    ACM 第十七天
    凸包模板
    极角排序常用方法
    ACM 第十六天
  • 原文地址:https://www.cnblogs.com/startnow/p/7676491.html
Copyright © 2020-2023  润新知