• OkHttpsUtil


    package club.tokenfans.bitdog.utils;
    
    import java.io.IOException;
    import java.security.KeyStore;
    import java.util.Arrays;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.concurrent.TimeUnit;
    
    import javax.net.ssl.*;
    
    import okhttp3.*;
    
    /**
     * @ClassName OkHttpUtils.java
     * @Description 功能描述: 用于发送http请求
     * @author bitdog 2027年10月27日 下午5:13:01
     * @CopyRight bitdog
     */
    public class OkHttpUtils {
    
        // 创建一个 OkHttpClient
        private static final OkHttpClient mOkHttpClient = getUnsafeOkHttpClient();
    
        // 参数格式
        public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    
        private static OkHttpClient getUnsafeOkHttpClient() {
            try {
                TrustManagerFactory trustManagerFactory = null;
                trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
                trustManagerFactory.init((KeyStore)null);
                TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
                if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
                    throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
                }
                X509TrustManager trustManager = (X509TrustManager)trustManagers[0];
                SSLContext sslContext = SSLContext.getInstance("TLS");
                sslContext.init(null, new TrustManager[] {trustManager}, null);
                SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
                OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS)
                    .readTimeout(15, TimeUnit.SECONDS).connectionPool(new ConnectionPool(200, 5, TimeUnit.MINUTES))
                    .sslSocketFactory(sslSocketFactory, trustManager).build();
                return okHttpClient;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 方法描述:httpGet
         * 
         * @author bitdog 2019年5月10日 下午3:59:07
         * @param url
         *            serverHost可以带参数如http://www.baidu.com?param1=xxx¶m2=xxx
         * @return
         * @throws IOException
         */
        public static String get(String url) throws IOException {
            Request request = new Request.Builder().url(url).get().build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpGet
         * 
         * @author bitdog 2019年5月10日 下午3:53:50
         * @param url
         *            serverHost
         * @param params
         *            参数:map格式
         * @return
         * @throws IOException
         */
        public static String get(String url, Map params) throws IOException {
            // 构建请求参数
            StringBuffer paramSb = new StringBuffer();
            if (params != null) {
                for (Entry e : params.entrySet()) {
    
                    if (e.getValue() != null) {
                        paramSb.append(e.getKey());
                        paramSb.append("=");
                        // 将参数值urlEncode编码,防止传递中乱码
                        paramSb.append(e.getValue().toString());
                        paramSb.append("&");
                    }
                }
            }
            if (paramSb.length() > 0) {
                String paramStr = paramSb.toString();
                paramStr = paramStr.substring(0, paramStr.length() - 1);
                url += "?" + paramStr;
            }
            Request request = new Request.Builder().url(url).get().build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPost
         * 
         * @author bitdog 2019年5月10日 下午3:53:28
         * @param url
         *            serverHost
         * @param params
         *            参数:json格式
         * @return
         * @throws IOException
         */
        public static String post(String url, String params) throws IOException {
            RequestBody body = RequestBody.create(JSON, params);
            Request request = new Request.Builder().url(url).post(body).build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPost
         * 
         * @author bitdog 2019年5月10日 下午3:53:50
         * @param url
         *            serverHost
         * @param params
         *            参数:map格式
         * @return
         * @throws IOException
         */
        public static String post(String url, Map params) throws IOException {
    
            FormBody.Builder build = new FormBody.Builder();
            for (String key : params.keySet()) {
                if (params.get(key) != null) {
                    build.add(key, params.get(key).toString());
                }
            }
            RequestBody body = build.build();
            Request request = new Request.Builder().url(url).post(body).build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPost
         *
         * @author bitdog 2019年5月10日 下午3:53:50
         * @param url
         *            serverHost
         * @param headers
         *            header头部添加参数
         * @param params
         *            参数:map格式
         * @return
         * @throws IOException
         */
        public static String post(String url, Map headers, Map params) throws IOException {
    
            // 封装请求参数
            FormBody.Builder build = new FormBody.Builder();
            for (String key : params.keySet()) {
                if (params.get(key) != null) {
                    build.add(key, params.get(key).toString());
                }
            }
            RequestBody body = build.build();
            // 封装请求hearder头
            Request.Builder builder = new Request.Builder().url(url).post(body);
            if (headers != null && headers.size() > 0) {
                for (String headerKey : headers.keySet()) {
                    builder.addHeader(headerKey, headers.get(headerKey).toString());
                }
            }
    
            Request request = builder.build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * @Description 方法描述: httpPost
         * @author bitdog 2027年10月27日 下午5:10:13
         * @CopyRight
         * @param url
         * @param params
         * @param headers
         * @return
         * @throws IOException
         */
        public static String post(String url, String params, Map headers) throws IOException {
            RequestBody body = RequestBody.create(JSON, params);
            Request.Builder builder = new Request.Builder().url(url).post(body);
            // 添加http header
            if (headers != null && headers.size() > 0) {
                for (String headerKey : headers.keySet()) {
                    builder.addHeader(headerKey, headers.get(headerKey).toString());
                }
            }
            Request request = builder.build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPut
         * 
         * @author bitdog 2019年5月10日 下午3:53:50
         * @param url
         *            serverHost
         * @param params
         *            参数:json格式
         * @return
         * @throws IOException
         */
        public static String put(String url, String params) throws IOException {
            RequestBody body = RequestBody.create(JSON, params);
            Request request = new Request.Builder().url(url).put(body).build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPut
         * 
         * @author bitdog 2019年5月10日 下午3:53:50
         * @param url
         *            serverHost
         * @param params
         *            参数:map格式数
         * @return
         * @throws IOException
         */
        public static String put(String url, Map params) throws IOException {
            FormBody.Builder build = new FormBody.Builder();
            for (String key : params.keySet()) {
                if (params.get(key) != null) {
                    build.add(key, params.get(key).toString());
                }
            }
            RequestBody body = build.build();
    
            Request request = new Request.Builder().url(url).put(body).build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpDelete
         * 
         * @author bitdog 2019年5月10日 下午3:53:50
         * @param url
         *            serverHost
         * @return
         * @throws IOException
         */
        public static String delete(String url) throws IOException {
            Request request = new Request.Builder().url(url).delete().build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPatch
         * 
         * @author bitdog 2019年5月10日 下午3:57:23
         * @param url
         *            serverHost
         * @param params
         *            参数:map格式
         * @return
         * @throws IOException
         */
        public static String patch(String url, Map params) throws IOException {
            FormBody.Builder build = new FormBody.Builder();
            for (String key : params.keySet()) {
                if (params.get(key) != null) {
                    build.add(key, params.get(key).toString());
                }
            }
            RequestBody body = build.build();
            Request request = new Request.Builder().url(url).patch(body).build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpPatch
         * 
         * @author bitdog 2019年5月10日 下午3:57:23
         * @param url
         *            serverHost
         * @param params
         *            参数:json格式
         * @return
         * @throws IOException
         */
        public static String patch(String url, String params) throws IOException {
            RequestBody body = RequestBody.create(JSON, params);
            Request request = new Request.Builder().url(url).patch(body).build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpHead
         * 
         * @author bitdog 2019年5月10日 下午3:58:28
         * @param url
         *            serverHost
         * @return
         * @throws IOException
         */
    
        public static String head(String url) throws IOException {
            Request request = new Request.Builder().url(url).head().build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * 方法描述:httpGet
         *
         * @author bitdog 2019年5月10日 下午3:59:07
         * @param url
         *            serverHost可以带参数如http://www.baidu.com?param1=xxx¶m2=xxx
         * @return
         * @throws IOException
         */
        public static String getWithHeaders(String url, Map headers) throws IOException {
            Request.Builder builder = new Request.Builder().url(url).get();
            if (headers != null && headers.size() > 0) {
                for (String headerKey : headers.keySet()) {
                    builder.addHeader(headerKey, headers.get(headerKey).toString());
                }
            }
            Request request = builder.build();
            Response response = mOkHttpClient.newCall(request).execute();
            return response.body().string();
        }
    
        /**
         * get
         * 
         * @param url
         * @param headers
         * @param params
         * @return java.lang.String
         * @author bitdog 2022/5/11 17:56
         */
        public static String get(String url, Map headers, Map params) throws IOException {
    
            // 构建请求参数
            StringBuffer paramSb = new StringBuffer();
            if (params != null) {
                for (Entry e : params.entrySet()) {
    
                    if (e.getValue() != null) {
                        paramSb.append(e.getKey());
                        paramSb.append("=");
                        // 将参数值urlEncode编码,防止传递中乱码
                        paramSb.append(e.getValue().toString());
                        paramSb.append("&");
                    }
                }
            }
            if (paramSb.length() > 0) {
                String paramStr = paramSb.toString();
                paramStr = paramStr.substring(0, paramStr.length() - 1);
                url += "?" + paramStr;
            }
    
            Request.Builder builder = new Request.Builder().url(url).get();
            if (headers != null && headers.size() > 0) {
                for (String headerKey : headers.keySet()) {
                    builder.addHeader(headerKey, headers.get(headerKey).toString());
                }
            }
            Request request = builder.build();
            Response response = mOkHttpClient.newCall(request).execute();
    
            return response.body().string();
        }
    
        public static Response postResponse(String url, Map headers, Map params)
            throws IOException {
    
            // 封装请求参数
            FormBody.Builder build = new FormBody.Builder();
            for (String key : params.keySet()) {
                if (params.get(key) != null) {
                    build.add(key, params.get(key).toString());
                }
            }
            RequestBody body = build.build();
            // 封装请求hearder头
            Request.Builder builder = new Request.Builder().url(url).post(body);
            if (headers != null && headers.size() > 0) {
                for (String headerKey : headers.keySet()) {
                    builder.addHeader(headerKey, headers.get(headerKey).toString());
                }
            }
    
            Request request = builder.build();
            return mOkHttpClient.newCall(request).execute();
        }
    
    }
  • 相关阅读:
    Web业务系统常见性能优化手段
    【ETL工具】本地环境IDEA远程DEBUG调试Flume代码
    请求响应-06.请求-路径参数
    dubbo 问题整理
    (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
    Python继承及方法解析顺序(MRO)详解 | 示例与super()函数使用
    OpenFeign、Feign以及Ribbon关系介绍
    pdd.order.information.get拼多多订单详情接口代码对接教程
    Java项目:ssm图书商城系统
    Java常见集合
  • 原文地址:https://blog.csdn.net/u011627980/article/details/128115916