网站建设资讯

NEWS

网站建设资讯

什么是OkHttpClientUtil

什么是OkHttpClientUtil,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

酉阳土家族苗族ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

OkHttp 工具类

/**
 * OkHttpClient工具
 *
 * @author yuhao.wang3
 */
public abstract class OkHttpClientUtil {
    private static final Logger logger = LoggerFactory.getLogger(OkHttpClientUtil.class);

    private static OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .writeTimeout(10, TimeUnit.SECONDS)
            .readTimeout(20, TimeUnit.SECONDS)
            .sslSocketFactory(SSLSocketClient.getSSLSocketFactory(), SSLSocketClient.getTrustManager())
            .hostnameVerifier(SSLSocketClient.getHostnameVerifier())
            .build();

    /**
     * 发起 application/json 的 post 请求
     *
     * @param url           地址
     * @param param         参数
     * @param interfaceName 接口名称
     * @return
     * @throws Exception
     */
    public static  T postApplicationJson(String url, Object param, String interfaceName, Class clazz) {
        // 生成requestBody
        RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")
                , JSON.toJSONString(param));

        return post(url, interfaceName, requestBody, param, null, clazz);
    }

    /**
     * 发起 application/json 的 post 请求
     *
     * @param url           地址
     * @param param         参数
     * @param interfaceName 接口名称
     * @return
     * @throws Exception
     */
    public static  T postApplicationJson(String url, Object param, Map header, String interfaceName, Class clazz) {
        // 生成requestBody
        RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")
                , JSON.toJSONString(param));

        return post(url, interfaceName, requestBody, param, header, clazz);
    }

    /**
     * 发起 x-www-form-urlencoded 的 post 请求
     *
     * @param url           地址
     * @param param         参数
     * @param interfaceName 接口名称
     * @return
     * @throws Exception
     */
    public static  T postApplicationXWwwFormUrlencoded(String url, Object param, String interfaceName, Class clazz) {
        Map paramMap = JSON.parseObject(JSON.toJSONString(param), new TypeReference>() {
        });
        // 生成requestBody
        StringBuilder content = new StringBuilder(128);
        for (Map.Entry entry : paramMap.entrySet()) {
            content.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
        if (content.length() > 0) {
            content.deleteCharAt(content.length() - 1);
        }

        RequestBody requestBody = FormBody.create(MediaType.parse("application/x-www-form-urlencoded"), content.toString());

        return post(url, interfaceName, requestBody, param, null, clazz);
    }

    /**
     * 发起post请求,不做任何签名
     *
     * @param url           发送请求的URL
     * @param interfaceName 接口名称
     * @param requestBody   请求体
     * @param param         参数
     */
    public static  T post(String url, String interfaceName, RequestBody requestBody, Object param, Map headers, Class clazz) {
        Request.Builder builder = new Request.Builder()
                //请求的url
                .url(url)
                .post(requestBody);

        if (MapUtils.isNotEmpty(headers)) {
            for (String key : headers.keySet()) {
                builder.addHeader(key, headers.get(key));
            }
        }
        Request request = builder.build();

        Response response = null;
        String result = "";
        String errorMsg = "";
        try {
            //创建/Call
            response = okHttpClient.newCall(request).execute();
            if (!response.isSuccessful()) {
                logger.error("访问外部系统异常 {}: {}", url, response.toString());
                errorMsg = String.format("访问外部系统异常:%s", response.toString());
                throw new RemoteAccessException(errorMsg);
            }
            result = response.body().string();
        } catch (RemoteAccessException e) {
            logger.warn(e.getMessage(), e);
            result = e.getMessage();
            throw e;
        } catch (Exception e) {
            logger.warn(e.getMessage(), e);
            if (Objects.isNull(response)) {
                errorMsg = String.format("访问外部系统异常::%s", e.getMessage());
                throw new RemoteAccessException(errorMsg, e);
            }
            errorMsg = String.format("访问外部系统异常:::%s", response.toString());
            throw new RemoteAccessException(errorMsg, e);
        } finally {
            logger.info("请求 {}  {},请求参数:{}, header:{}, 返回参数:{}", interfaceName, url, JSON.toJSONString(param),
                    JSON.toJSONString(headers), StringUtils.isEmpty(result) ? errorMsg : result);
        }

        return JSON.parseObject(result, clazz);
    }
}

关于什么是OkHttpClientUtil问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


文章名称:什么是OkHttpClientUtil
URL网址:http://cdweb.net/article/jjhhgg.html