hutool工具进行https接口调用(忽略ssl认证)

这篇具有很好参考价值的文章主要介绍了hutool工具进行https接口调用(忽略ssl认证)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.设置忽略SSl工具类

package com.ruoyi.config.zhuanliju;

/**
 * @author cf
 * @date 2023/7/3下午 1:06
 */
import javax.net.ssl.*;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;

public class SSLUtils {
    /**
     * 忽略https证书验证
     * @return
     */
    public static SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, getTrustManager(), new SecureRandom());
            return sslContext.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private static TrustManager[] getTrustManager() {
        TrustManager[] trustAllCerts = new TrustManager[]{
            new X509TrustManager() {
                //检查客户端证书,若不信任该证书抛出异常,咱们自己就是客户端不用检查
                @Override
                public void checkClientTrusted(X509Certificate[] chain, String authType) {
                }
                //检查服务器的证书,若不信任该证书抛出异常,可以不检查默认都信任
                @Override
                public void checkServerTrusted(X509Certificate[] chain, String authType) {
                }
                //返回受信任的X509证书数组
                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[]{};
                }
            }
        };
        return trustAllCerts;
    }
}



2.工具类设置文章来源地址https://www.toymoban.com/news/detail-765901.html

package com.ruoyi.config.zhuanliju;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;

import javax.net.ssl.*;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.time.LocalDateTime;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;

public class ZljHttpsUtil implements TrustManager, X509TrustManager {

    private final static String BOUNDARY = "----WebKitFormBoundarygrBcuHVTeNQcBtqn";

    public X509Certificate[] getAcceptedIssuers()
    {
        return null;
    }


    public boolean isServerTrusted(X509Certificate[] certs)
    {
        return true;
    }

    public boolean isClientTrusted(X509Certificate[] certs)
    {
        return true;
    }


    public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException
    {
        return;
    }


    public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException
    {
        return;
    }


    public static class TrustAnyTrustManager implements X509TrustManager {
        /**
         * 该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,因此我们只需要执行默认的信任管理器的这
         * 个方法。
         * JSSE中,默认的信任管理器类为TrustManager。
         */
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {
        }

        /**
         * 该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。
         * 在实现该方法时,也可以简单的不做任何处理, 即一个空的函数体,由于不会抛出异常,它就会信任任何证书。(non-Javadoc)
         */
        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType)
            throws CertificateException {
        }

        /**
         * @return 返回受信任的X509证书数组。
         */
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[]{};
        }
    }

    public static class TrustAnyHostnameVerifier implements HostnameVerifier {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    }

    private static String getUUID() {
        UUID uuid = UUID.randomUUID();
        String str = uuid.toString();
        return str.replace("-", "");
    }

    /**
     * Description:sendJsonAndFileToHttpsPost 保存文件和文本参数接口  todo:可以访问,但显示服务器内部错误
     * @date  2023/11/14 15:06
     * @auther zhuenci
     * @param url
     * @param fileBytes
     * @param map
     * @param token
     * @return
     **/

    public static String sendJsonAndFileToHttpsPost(String url, Map<String,Object> map, byte[] fileBytes, String fileName, String token){
        System.out.println("【"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求开始===================================");
        if (StringUtils.isNotBlank(fileName)) {
            try {
                SSLContext sc = SSLContext.getInstance("SSL");
                sc.init(null, new TrustManager[]{new TrustAnyTrustManager()},
                    new java.security.SecureRandom());
                System.out.println("url路径为:"+url);
                URL urlObj = new URL(url);
                HttpsURLConnection con = (HttpsURLConnection) urlObj.openConnection();
                con.setSSLSocketFactory(sc.getSocketFactory());
                //conn.setRequestMethod(requestMethod);
                con.setHostnameVerifier(new TrustAnyHostnameVerifier());
                con.setRequestMethod("POST");
                con.setDoInput(true);
                con.setDoOutput(true);
                con.setUseCaches(false);         //不使用缓存
                con.setInstanceFollowRedirects(true);
                //con.setFixedLengthStreamingMode(filee.length());
                String boundary = "----WebKitFormBoundaryH7JEPCAd6W4ylusd";
                con.setRequestProperty("Accept", "application/json, text/plain, */*");
                con.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
                con.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9");
                con.setRequestProperty("Connection", "keep-alive");
                //con.setRequestProperty("Content-Length", "198");
                con.setRequestProperty("Host", "api.cponline.cnipa.gov.cn");
                con.setRequestProperty("Origin", "https://interactive.cponline.cnipa.gov.cn");
                con.setRequestProperty("Referer", "https://interactive.cponline.cnipa.gov.cn/");
                con.setRequestProperty("Sec-Fetch-Des", "empty");
                con.setRequestProperty("Sec-Fetch-Mode", "cors");
                con.setRequestProperty("Sec-Fetch-Site", "same-site");
                con.setRequestProperty("User-Agen", "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.35 Safari/537.36 JiSu/100.0.0.35");
                con.setRequestProperty("Authorization", token);
                con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
                //写入输出流
                OutputStream output = new DataOutputStream(con.getOutputStream());
                // text
                if (!CollectionUtils.isEmpty(map)) {
                    StringBuffer strBuf = new StringBuffer();
                    Iterator iter = map.entrySet().iterator();
                    while (iter.hasNext()) {
                        Map.Entry entry = (Map.Entry) iter.next();
                        String inputName = (String) entry.getKey();
                        Object inputValue = entry.getValue();
                        if (inputValue == null) {
                            continue;
                        }
                        strBuf.append("\r\n").append("--").append(boundary).append("\r\n");
                        strBuf.append("Content-Disposition: form-data; name=\"" + inputName + "\"\r\n\r\n");
                        strBuf.append(inputValue).append("\r\n");
                    }
                    output.write(strBuf.toString().getBytes("utf-8"));
                }
                byte[] endData = ("\r\n--" + boundary + "--\r\n").getBytes("utf-8");
                output.write(endData);
                // 刷新
                //output.flush();
                if(null != fileBytes && fileBytes.length>0){
                    output.write(("--" + boundary + "\r\n").getBytes("utf-8"));
                    output.write(("Content-Disposition: form-data; name=\"file\"; filename=\"" + fileName + "\"\r\n").getBytes("utf-8"));
                    output.write("Content-Type: application/octet-stream\r\n\r\n".getBytes("utf-8"));
                    output.write(fileBytes);
                    output.write("\r\n".getBytes("utf-8"));
                    output.write(("--" + boundary + "--\r\n").getBytes("utf-8"));
                    output.flush();
                }
                int responseCode = con.getResponseCode();
                System.out.println("Response Code: " + responseCode);
                //读取输入流
                InputStream is;
                if(responseCode == 200){
                    is = con.getInputStream();
                }else{
                    is = con.getErrorStream();
                }
                if(null != is){
                    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
                    byte[] buffer2 = new byte[1024];
                    int len = 0;
                    while ((len = is.read(buffer2)) != -1) {
                        outStream.write(buffer2, 0, len);
                    }
                    is.close();
                    String s = outStream.toString(Constants.UTF8);
                    System.out.println("专利业务办理系统上传文件返回结果为:"+s);
                    System.out.println("【"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求结束===================================");
                    return s;
                }

            } catch (Exception e){
                System.out.println("JSON数据发送失败,异常:"+ e.getMessage());
                e.printStackTrace();
            }
        }
        return null;
    }



    /**
     * Description:sendJsonAndFileToHttpsPost 保存文件和文本参数接口
     * @date  2023/11/14 15:06
     * @auther zhuenci
     * @param strUrl
     * @param fileParams
     * @param params
     * @param token
     * @return
     **/
    public static String sendJsonAndFileToHttpsPost(String strUrl, Map<String, Object> params, Map<String, byte[]> fileParams, String fileName, String token) {
        System.out.println("【sendJsonAndFileToHttpsPost"+ LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求开始===================================");
        System.out.println("*******sendJsonAndFileToHttpsPost参数为:\n strUrl:"+strUrl +"\n params:"+params +" \n fileParams:"+fileParams+" \n");
        URL url;
        InputStream in;
        String TWO_HYPHENS = "--";
        String LINE_END = "\r\n";
        try {
            url = new URL(strUrl);
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, new TrustManager[]{new ZljHttpsUtil.TrustAnyTrustManager()},
                new java.security.SecureRandom());
            System.out.println("url路径为:"+url);
            //得到connection对象
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            connection.setSSLSocketFactory(sc.getSocketFactory());
            //conn.setRequestMethod(requestMethod);
            connection.setHostnameVerifier(new ZljHttpsUtil.TrustAnyHostnameVerifier());
            /************************************设置请求头*************************************************/
            //设置请求方式为POST
            connection.setRequestMethod("POST");
            //允许写出
            connection.setDoOutput(true);
            //允许读入
            connection.setDoInput(true);
            //不使用缓存
            connection.setUseCaches(false);
            //本次连接是否自动处理重定向(true:系统自动处理重定向;false:则需要自己从http reply中分析新的url)(置所有的http连接是否自动处理重定向:public static void HttpURLConnection.setFollowRedirects(boolean followRedirects))
            connection.setInstanceFollowRedirects(true);
            //编码格式
            connection.setRequestProperty("Charset", "utf-8");
            // 设置发送数据的格式(form-data格式)   //boundary为头部分隔符,头部拼接时需要分隔符。例如下面的有多个"Content-Disposition"拼接时需要用到此分隔符
            connection.setRequestProperty("Content-Type", "multipart/form-data ; boundary=" + BOUNDARY);
            // 设置接收数据的格式(json格式)
            connection.setRequestProperty("Accept", "application/json, text/plain, */*");
            connection.setRequestProperty("Host", "api.cponline.cnipa.gov.cn");
            connection.setRequestProperty("Origin", "https://interactive.cponline.cnipa.gov.cn");
            connection.setRequestProperty("Referer", "https://interactive.cponline.cnipa.gov.cn/");
            connection.setRequestProperty("Authorization", token);
            connection.connect(); //连接
            /************************************输出流,写数据,start*************************************************/
            //获得输出流对象,此种默认post
            DataOutputStream out = new DataOutputStream(connection.getOutputStream());
            StringBuffer strBufparam = new StringBuffer();
            Iterator it = params.entrySet().iterator();
            while (it.hasNext()) {
                //封装键值对数据
                Map.Entry<String, Object> entry = (Map.Entry) it.next();
                String key = entry.getKey();
                Object value = entry.getValue();

                strBufparam.append(TWO_HYPHENS);
                strBufparam.append(BOUNDARY);
                //"--" + BOUNDARY + "\r\n"
                strBufparam.append(LINE_END);
                strBufparam.append("Content-Disposition: form-data; name=\"" + key + "\"");
                strBufparam.append(LINE_END);
                strBufparam.append(LINE_END);
                strBufparam.append(value);
                strBufparam.append(LINE_END);
            }
            out.write(strBufparam.toString().getBytes("utf-8"));
            strBufparam.toString().getBytes();
            //写入图片参数
            if (fileParams != null && fileParams.size() > 0) {
                Iterator fileIt = fileParams.entrySet().iterator();
                while (fileIt.hasNext()) {
                    Map.Entry<String, byte[]> fileEntry = (Map.Entry<String, byte []>) fileIt.next();
                    //拼接文件的参数
                    StringBuffer strBufFile = new StringBuffer();
                    strBufFile.append(TWO_HYPHENS);
                    strBufFile.append(BOUNDARY);
                    strBufFile.append(LINE_END);
                    //strBufFile.append("Content-Disposition: form-data; name=\"" + "image" + "\"; filename=\"" + file.getName() + "\"");
                    // fileEntry.getKey():文件全路径。fileName:文件名称
                    strBufFile.append("Content-Disposition: form-data; name=\"" + fileEntry.getKey() + "\"; filename=\"" + fileName + "\"");
                    strBufFile.append(LINE_END);
                    //此处很关键----文件格式
                    strBufFile.append("Content-Type: application/octet-stream");
                    strBufFile.append(LINE_END);
                    strBufFile.append(LINE_END);
                    out.write(strBufFile.toString().getBytes());
                    //文件 (此参数之前调用了本页面的重写方法getBytes(File f),将文件转换为字节数组了 )
                    out.write(fileEntry.getValue());
                    out.write((LINE_END).getBytes());
                }
            }

            //写入标记结束位
            byte[] endData = ( TWO_HYPHENS + BOUNDARY + TWO_HYPHENS + LINE_END).getBytes();
            out.write(endData);
            out.flush();
            out.close();
            /************************************输出流,写数据完成end*************************************************/
            int code = connection.getResponseCode(); //获得响应码(200为成功返回)
            try {
                if (code == HttpURLConnection.HTTP_OK) {
                    in = connection.getInputStream(); //获取响应流
                } else {
                    in = connection.getErrorStream(); //获取错误响应流
                }
            } catch (SSLException e) {
                e.printStackTrace();
                return "";
            }
            /**********读取返回的输入流信息**************/
            ByteArrayOutputStream baout = new ByteArrayOutputStream();
            byte[] buff = new byte[1024];
            int len;
            while ((len = in.read(buff)) != -1) {
                baout.write(buff, 0, len);
            }
            byte[]  bytes = baout.toByteArray();
            in.close();
            String ret = new String(bytes, "utf-8") ;
            System.out.println("专利业务办理系统上传文件返回结果为:"+ret);
            System.out.println("【sendJsonAndFileToHttpsPost"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求结束===================================");
            return ret;
        }catch(Exception e){
            System.out.println("sendJsonAndFileToHttpsPost方法JSON数据发送失败,异常:"+e.getMessage());
            e.printStackTrace();
        }
        return null;
    }


    /**
     * Description:单层get方法参数设置
     * @date  2023/11/13 17:00
     * @auther zhuenci
     * @param url
     * @return URL
     **/

    public static URL getUrl(String url, String content,String requestMethod) throws MalformedURLException {
        String returnUrl;
        if("GET".equals(requestMethod) && StringUtils.isNotBlank(content)){
            String[] paramsInfo = content.split(",");
            String newContent = "";
            for(int i =0;i<paramsInfo.length;i++){
                String[] param = paramsInfo[i].split(":");
                if(i == 0){
                    newContent = newContent + param[0].replace("{","").replace("\"","")+"=";
                }else{
                    newContent = newContent + param[0].replace("\"","")+"=";
                }
                if(StringUtils.isNotBlank(param[1])){
                    if (i == paramsInfo.length - 1) {
                        newContent = newContent + param[1].replace("}","").replace("\"","");
                    }else{
                        newContent = newContent + param[1].replace("\"","");
                    }
                }else{
                    newContent = newContent + "";
                }
                if(i  < paramsInfo.length-1){
                    newContent = newContent + "&";
                }
            }
            returnUrl = url + "?" +newContent;
        }else{
            returnUrl = url;
        }
        System.out.println("目前地址信息为"+returnUrl);
        URL console = new URL(returnUrl);
        return console;
    }

    public static void main(String[] args) throws MalformedURLException {
        System.out.println(JSONObject.toJSONString(getUrl("https://interactive.cponline.cnipa.gov.cn",
                "{\"dianzisqajbh\":\"10000515094528\",\"rule_groupcode\":\"10\",\"xxxx\":10,\"weww\":\"wwwww\"}",
                "GET")));
    }

    public static String sendDataToHttpsPost(HttpServletRequest request,String url,String token){
        System.out.println("【sendDataToHttpsPost"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求开始===================================");
        System.out.println("url路径为:"+url);
        String body = null;
        try (StringWriter writer = new StringWriter()) {
            BufferedReader reader = request.getReader();
            int read;
            char[] buf = new char[1024 * 8];
            while ((read = reader.read(buf)) != -1) {
                writer.write(buf, 0, read);
            }
            body = writer.getBuffer().toString();
            System.out.println("=========================================================");
            System.out.println("请求体参数为:"+body);
            System.out.println("=========================================================");
        }catch (Exception e){
            e.printStackTrace();
        }
        HttpResponse execute = HttpRequest.post(url)
            .header("Authorization", token)
            .header("Content-Type", "application/json;charset=UTF-8")
            .header("Host", "api.cponline.cnipa.gov.cn")
            .header("Origin", "https://interactive.cponline.cnipa.gov.cn")
            .header("Referer", "https://interactive.cponline.cnipa.gov.cn/")
            .setSSLSocketFactory(SSLUtils.getSSLSocketFactory())
            .body(body).execute();
        if (execute.isOk()){
            String post = execute.body();
            System.out.println("=========================================================");
            System.out.println("返回结果为:"+post);
            System.out.println("=========================================================");
            return post;
        }else{
            //错误状态码
            int status = execute.getStatus();
            System.out.println("=========================================================");
            System.out.println("错误状态码为:"+status);
            System.out.println("=========================================================");
        }
        System.out.println("【sendDataToHttpsPost"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求结束===================================");
        return null;
    }
    public static String sendDataToHttpsGet(HttpServletRequest request,String url,String token){
        System.out.println("【sendDataToHttpsGet"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求开始===================================");
        System.out.println("url路径为:"+url);
        String body = null;
        try (StringWriter writer = new StringWriter()) {
            BufferedReader reader = request.getReader();
            int read;
            char[] buf = new char[1024 * 8];
            while ((read = reader.read(buf)) != -1) {
                writer.write(buf, 0, read);
            }
            body = writer.getBuffer().toString();
            System.out.println("=========================================================");
            System.out.println("请求体参数为:"+body);
            System.out.println("=========================================================");
        }catch (Exception e){
            e.printStackTrace();
        }
        HttpResponse execute = HttpRequest.get(url)
            .header("Authorization", token)
            .header("Content-Type", "application/json;charset=UTF-8")
            .header("Host", "api.cponline.cnipa.gov.cn")
            .header("Origin", "https://interactive.cponline.cnipa.gov.cn")
            .header("Referer", "https://interactive.cponline.cnipa.gov.cn/")
            .setSSLSocketFactory(SSLUtils.getSSLSocketFactory())
            .body(body).execute();
        if (execute.isOk()){
            String post = execute.body();
            System.out.println("=========================================================");
            System.out.println("返回结果为:"+post);
            System.out.println("=========================================================");
            return post;
        }else{
            //错误状态码
            int status = execute.getStatus();
            System.out.println("=========================================================");
            System.out.println("错误状态码为:"+status);
            System.out.println("=========================================================");
        }
        System.out.println("【sendDataToHttpsGet"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求结束===================================");
        return null;
    }

    /**
     * post方式请求服务器(https协议)
     *
     * @param url     求地址
     * @param content 参数
     * @param requestMethod 请求类型(POST,GET)
     * @param token
     * @return
     */
    public static String sendJsonToHttpsPost(String url, String content,String requestMethod,String token) {
        System.out.println("【sendJsonToHttpsPost"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求开始===================================");
        try {
            /*
             * 类HttpsURLConnection似乎并没有提供方法设置信任管理器。其实,
             * HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接
             * ,SSLSocket对象是由SSLSocketFactory生成的。
             * HttpsURLConnection提供了方法setSSLSocketFactory
             * (SSLSocketFactory)设置它使用的SSLSocketFactory对象。
             * SSLSocketFactory通过SSLContext对象来获得,在初始化SSLContext对象时,可指定信任管理器对象。
             */
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, new TrustManager[]{new TrustAnyTrustManager()},
                new java.security.SecureRandom());
            URL console = getUrl(url,content,requestMethod);
            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
            conn.setSSLSocketFactory(sc.getSocketFactory());
            conn.setRequestMethod(requestMethod);
            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
            conn.setDoOutput(true);
            conn.setUseCaches(false);         //不使用缓存
            conn.setInstanceFollowRedirects(true);
            // 设置请求头
            conn.setRequestProperty("Accept", "application/json, text/plain, */*");
            conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
            conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9");
            conn.setRequestProperty("Connection", "keep-alive");
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            conn.setRequestProperty("Host", "api.cponline.cnipa.gov.cn");
            conn.setRequestProperty("Origin", "https://interactive.cponline.cnipa.gov.cn");
            conn.setRequestProperty("Referer", "https://interactive.cponline.cnipa.gov.cn/");
            conn.setRequestProperty("Authorization",token);
            conn.connect();
            if(StringUtils.isNotBlank(content) && "POST".equals(requestMethod)){
                //该方法会默认为POST方法
                DataOutputStream out = new DataOutputStream(conn.getOutputStream());
                out.write(content.getBytes(Constants.UTF8));
                // 刷新、关闭
                out.flush();
                out.close();
            }
            int responseCode = conn.getResponseCode();
            System.out.println("Response Code: " + responseCode);
            InputStream is;
            if(responseCode == 200){
                is = conn.getInputStream();
            }else{
                is = conn.getErrorStream();
            }
            if(null != is){
                ByteArrayOutputStream outStream = new ByteArrayOutputStream();
                byte[] buffer2 = new byte[1024];
                int len = 0;
                while ((len = is.read(buffer2)) != -1) {
                    outStream.write(buffer2, 0, len);
                }
                is.close();
                String s = outStream.toString(Constants.UTF8);
                System.out.println("专利业务办理系统返回结果为:"+s);
                System.out.println("【sendJsonToHttpsPost"+LocalDateTime.now()+"】==================================调用专利业务办理系统接口请求结束===================================");
                return s;
            }
        } catch (Exception e) {
            System.out.println("JSON数据发送失败,异常:"+ e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

}

到了这里,关于hutool工具进行https接口调用(忽略ssl认证)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 调用hutool包调用http接口处理文件流-文件的上传下载工具类

    hutool工具类get请求获取流: InputStream inputStream = HttpRequest.get(fileUrl).execute().bodyStream(); hutool工具类post请求上传文件流: String resp = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.MULTIPART.getValue()).form(params).execute().body(); 完成代码

    2024年01月17日
    浏览(61)
  • 记一次使用hutool的http工具调用外部接口同步人员信息

    首先是TreeNodeVo实体 构建目录树的工具类 最后根据返回的集合生成目录结构,主要设置treenodevo对象的id,pid,value,lable参数 controller类 前端vue+elementui,用级联选择器显示目录树 data中添加treeNodeVos对象 methods中添加后台调用方法,此方法可以在点击页面加载时调用,看自己,还有

    2024年02月05日
    浏览(49)
  • javax.net.ssl.SSLHandshakeException:(HTTPS绕过安全认证进行请求链接)

    1、问题: 在使用jsoup爬取数据时,碰到了使用https的网站,遇到报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed 2、解决 后自己在网上查了一些资料,找到相关解决代码: 3、方法调用  

    2024年02月08日
    浏览(45)
  • HTTPS请求忽略SSL证书

    现场环境: 后端服务部署在docker内,远程调用https接口,线上报错: unable to find valid certification path to requested target 解决方案: 设置SSLSocketFactory忽略证书校验 实现案例: 使用的cn.hutool.http.HttpRequest工具类请求的数据,支持设置头部、表单、body、超时时间等关键信息 工具类 SSL

    2024年02月11日
    浏览(53)
  • RestTemplate HTTPS请求忽略SSL证书

    使用RestTemplate发送HTTPS请求的时候,出现了这样的一个问题: RestTemplate 默认不支持https协议 解决方案:         第一种是忽略认证         第二种是导入证书,比较复杂(比第一种安全)  这里说一下第一种解决方案,忽略认证 版本:Spring Boot2.x RestTemplateConfig 测试代

    2024年02月10日
    浏览(49)
  • curl 忽略https的ssl的证书验证

    今天使用curl 测试url请求出现了需要ssl证书的验证 curl的用法

    2024年02月17日
    浏览(47)
  • 请求第三方Https地址忽略SSL证书校验

    说明:个人使用记录 需要在请求之前忽略ssl协议,这里是直接使用静态方法初始化时就执行了 也需要在请求接口之前忽略SSL

    2024年04月10日
    浏览(50)
  • Feign忽略Https的SSL最佳方案(且保证负载均衡将失效)

    同时解决Https的SSL证书验证问题和feign不支持Patch请求方法的问题 代码 1. 工具类 OkHttpUtils.java 代码 2. 工具类 FeignConfiguration.java

    2024年02月13日
    浏览(46)
  • springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书

    千万万苦利用科学上网找到了,记录一下

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包