首页 > 编程语言 >https请求,Java代码忽略https证书:解决No subject alternative names present问题

https请求,Java代码忽略https证书:解决No subject alternative names present问题

时间:2023-03-15 15:44:27浏览次数:44  
标签:java String No Java https new import public

https请求,Java代码忽略https证书:解决No subject alternative names present问题

package com.test.utils;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.*;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

/**
 * Java代码忽略https证书:解决No subject alternative names present问题
 */
public class HttpsUtils {
    private static final Logger logger = LoggerFactory.getLogger(HttpsUtils.class);

    /**
     *
     * @param hosturl
     * @param params
     * @return
     * @throws IOException
     * @throws KeyManagementException
     * @throws NoSuchAlgorithmException
     */
    public static String post(String hosturl,String params) throws IOException, KeyManagementException, NoSuchAlgorithmException {
        HttpsURLConnection.setDefaultHostnameVerifier(new HttpsUtils().new NullHostNameVerifier());
        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        URL url = new URL(hosturl+"?"+params);
        logger.info("参数:"+hosturl+"?"+params);
        // 打开restful链接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");// POST GET PUT DELETE
        // 设置访问提交模式,表单提交
        conn.setRequestProperty("Content-Type", "text/plain;charset=utf-8");
        conn.setConnectTimeout(130000);// 连接超时 单位毫秒
        conn.setReadTimeout(130000);// 读取超时 单位毫秒
        // 读取请求返回值
        byte bytes[] = new byte[1024];
        InputStream inStream = conn.getInputStream();
        inStream.read(bytes, 0, inStream.available());
        logger.info("返回结果:" + new String(bytes, "utf-8"));
        return new String(bytes, "utf-8");
    }

    static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            // TODO Auto-generated method stub
        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            // TODO Auto-generated method stub
        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            // TODO Auto-generated method stub
            return null;
        }
    } };

    public class NullHostNameVerifier implements HostnameVerifier {
        /*
         * (non-Javadoc)
         *
         * @see javax.net.ssl.HostnameVerifier#verify(java.lang.String,
         * javax.net.ssl.SSLSession)
         */
        @Override
        public boolean verify(String arg0, SSLSession arg1) {
            // TODO Auto-generated method stub
            return true;
        }
    }

}

 

标签:java,String,No,Java,https,new,import,public
From: https://www.cnblogs.com/oktokeep/p/17218769.html

相关文章

  • 【Java笔记5】运算符
    @目录一.算术运算符二.赋值运算符三.比较运算符四.逻辑运算符五.三元运算符六.运算符的优先级七.字符串拼接字符串字符串拼接运算一.算术运算符运算符说明......
  • 【Java笔记6】流程结构
    一.顺序结构按照次序一行接一行执行。二.分支结构有选择的执行某一部分代码或者不执行某一部分代码。1.if结构语法:if(结果为boolean类型的条件){ //被条件执行......
  • 【Java笔记7】随机数生成,数组,for-each
    @目录一.生成随机数:二.数组1.定义一个数组(1)数组的定义(2)数组的实例化2.数组中元素的表示方法(1)使用数组元素下标3.数组的存储4.数组默认值5.多维数组6.常见错误:数组......
  • 初识Node和内置模块
    初识Node与内置模块概述:了解Node.js,熟悉内置模块:fs模块、path模块、http模块初识Node.js浏览器中的JavaScript运行环境运行环境是指代码正常运行所需的必要环境对于C......
  • 某大厂面试题:说一说Java、Spring、Dubbo三者SPI机制的原理和区别
    大家好,我是三友~~今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是......
  • 深入nodejs的event-loop
    此处如无特殊指出的话,eventloop的语境都是指nodejs本文研究所用的nodejs环境是:操作系统window10+nodejs版本号为v12.16.2什么是eventloop?eventloop是指由libuv......
  • 彻底搞懂nodejs事件循环
    nodejs是单线程执行的,同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回,就可以继续往下执行代码。当异步事件触发之后,就会通知主线程,主线......
  • [论文阅读] A survey on anomaly detection for technical systems using LSTM networ
    本要是对于原文的部分内容翻译、摘录。详情请阅读原文。(未看完)引言为了解决检测具有动态和时变特征的复杂上下文异常的问题,新的有前途的循环神经网络(RNN)体系结构出现了......
  • Node.js版的Playwright等待所有请求完成
    以下是一个Node.js版的Playwright等待所有请求完成的Demo喵~:```javascriptconst{chromium}=require('playwright');(async()=>{constbrowser=awaitchr......
  • java 时间操作
    旧API   Date和Calendar  使用SimpleDateFormat格式化新API   LocalDateTime和ZonedDateTime  使用DateTimeFormatter格式化Datedate=new......