java实现https请求

java实现Https 请求 nvps.add(new BasicNameValuePair("user.userName", "哈哈"));* nvps.add(new BasicNameValuePair("user.userName", "哈哈"));* nvps.add(new BasicNameValuePair("user.userName", "哈哈"));* nvps.add(new BasicNameValuePair("user.userName", "哈哈"));* 执行post或者get请求。 阅读详情

学习中遇到的小功能,暂做笔记,功能还可以进一步完善。

HttpsUtil工具类如下


import java.io.*;
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;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class HttpsUtil {

    private static final class DefaultTrustManager implements X509TrustManager {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        }

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

    private static HttpsURLConnection getHttpsURLConnection(String uri, String method) throws IOException {
        SSLContext ctx = null;
        try {
            ctx = SSLContext.getInstance("TLS");
            ctx.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom());
        } catch (KeyManagementException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        SSLSocketFactory ssf = ctx.getSocketFactory();

        URL url = new URL(uri);
        HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
        httpsConn.setSSLSocketFactory(ssf);
        httpsConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
        httpsConn.setRequestProperty("Authorization","username");
        httpsConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
        /*
        在握手期间,如果 URL 的主机名和服务器的标识主机名不匹配,
        则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。
        策略可以是基于证书的或依赖于其他验证方案。
        当验证 URL 主机名使用的默认规则失败时使用这些回调。
         */
        httpsConn.setHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String arg0, SSLSession arg1) {
                return true;
            }
        });
        httpsConn.setRequestMethod(method);
        httpsConn.setDoInput(true);
        httpsConn.setDoOutput(true);
        return httpsConn;
    }

    private static byte[] getBytesFromStream(InputStream is) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] kb = new byte[1024];
        int len;
        while ((len = is.read(kb)) != -1) {
            baos.write(kb, 0, len);
        }
        byte[] bytes = baos.toByteArray();
        baos.close();
        is.close();
        return bytes;
    }

    private static void setBytesToStream(OutputStream os, byte[] bytes) throws IOException {
        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
        byte[] kb = new byte[1024];
        int len;
        while ((len = bais.read(kb)) != -1) {
            os.write(kb, 0, len);
        }
        os.flush();
        os.close();
        bais.close();
    }

    public static byte[] doGet(String uri) throws IOException {
        HttpsURLConnection httpsConn = getHttpsURLConnection(uri, "GET");
        return getBytesFromStream(httpsConn.getInputStream());
    }

    public static byte[] doPost(String uri, String data) throws IOException {
        HttpsURLConnection httpsConn = getHttpsURLConnection(uri, "POST");
        setBytesToStream(httpsConn.getOutputStream(), data.getBytes());
        return getBytesFromStream(httpsConn.getInputStream());
    }
}

工具类实现例子

public class Main {
    public static void main(String[] args) throws Exception{
        String uri = "https://www.baidu.com";
        byte[] bytes = HttpsUtil.doPost(uri,"");
        System.out.println(new String(bytes));
    }
}

 

JAVA实现发送HTTPS请求(SSL双向认证) 一、项目背景 Java项目需要作为客户端发起HTTPS请求访问服务端,并且需要携带证书进行SSL双向认证,当前提供的证书相关文件有:ca.crt、ca.key、client.crt、client.key、server.crt、server.key 二、实现步骤 1、对客户端证书和私钥进行打包处理(需要输入密码,之后在代码中需要用到该密码) openssl pkcs12 -export clcerts -in client.crt -inkey client.key -out client.p12 2、.p 阅读详情

相关推荐

Java HTTPS请求工具类的实现方法

HTTPS工作在应用层,利用SSL/TLS协议在传输层对数据进行加密。当用户与服务器建立连接时,它首先通过非对称加密技术交换密钥,之后使用这个密钥进行对称加密,确保数据传输过程的安全性。当需要更细粒度地控制SSL/TLS行为时,可以配置自定义的密钥管理器和信任管理器。以下代码展示了如何创建自定义的KeyManager和TrustManager:try {// 创建自定义的KeyManager。

weixin_32661831的博客 544

java调用https接口

http与https区别 https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比h...

cmm1的博客 1万+

HTTPS POST请求在Java中的实现与解析

在Web开发中,HTTP协议定义了多种请求方法,每种方法都有其特定的用途。其中,POST方法是用于向服务器提交数据的常用方法,它被设计用来允许客户端发送数据到服务器,以便创建或更新资源。在HTTP/1.1规范中,POST方法被定义为它应该引起服务器对资源的改变,而不仅仅是为了查询数据。这使得POST方法成为处理表单提交、文件上传、API调用等场景的理想选择。

weixin_42591908的博客 970

关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)

转自:http://blog.youkuaiyun.com/shumeng_xiaoyan/article/details/76503601 https协议对于开发者而言其实只是多了一步证书验证的过程。这个证书正常情况下被jdk/jre/security/cacerts所管理。里面证书包含两种情况: 1、机构所颁发的被认证的证书,这种证书的网站在浏览器访问时https头显示为绿色如百度

hehe_heh的博客 3408

声音编程(Voice Coding) Talon(一) 基本介绍与安装使用

语音编程平台简介 语音编程工具有哪些:Talon是一款声音编程平台,它追求的意义在于完全取代键盘和鼠标。。当前,全球有两个领先的语音编程平台(Programming-By-Speech Platforms)。一是Serenade,它的作用有点像数字助手,可以让你描述正在编程的命令,而不要求你必须逐字逐句地口述每条指令。另一个就是Talon,它提供了对每一行代码更精细的控制,这也意味着你需要对每一个被编入机器的任务有更细致的把握。具体的差别可以参考文章末尾的Serenade 和 Talon编程的例子。 除了这

yinglang19941010的专栏 4139

推荐系统召回总结(持续更新)

推荐系统架构 候选池:可供推荐的物料候选池,对于图文、短视频、新闻等来说通常是最近N天的新物料组成的集合,定期进行物料更新。 召回:从候选池中选出和用户相关的物料,交给后面的排序模块进行打分。召回面对的候选集通常是数十万或者百万甚至千万的量级,检索过程必须轻量快速。通常由多路召回组成,保证不遗漏且相关性、多样性尽量好,可以分为非个性化召回和个性化召回。 粗排:对召回选择的几千或者几百候选物料进行排序,快速打分选出topN,减少精排的压力,兼顾精准与效率。 精排:对粗排的结果进行精准排序,这个环节需要特征尽可

whgyxy的博客 2515

java创建https请求(忽略证书的)

package com.hannan.ehu.test.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.net.ssl.*; import java.io.*; import java.net.URL; import java.security.KeyManagementException...

qq_36389107的博客 3114

java https请求,https请求如何调用

https请求如何在代码中调用

IT_51888_liang的博客 1万+

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2944

总结:Java代码中该如何发起一个https请求

【代码】总结:Java代码该如何发起一个https请求。

weixin_48033662的博客 4245

多源异构数据在线可视化ETL编排平台深度实践:基于Python与Apache Calcite的现代数据管道构建

在当今企业数据环境中,数据源呈现爆发式增长与高度异构性。传统ETL工具面对多源(MySQL、PostgreSQL、MongoDB、Hive、文件系统等)与异构(结构化、半结构化、非结构化)数据时,往往面临扩展性差、学习曲线陡峭、难以融入现代DevOps体系等问题。本文深入探讨了如何构建一个基于Python/Pandas、Apache Calcite(通过JPype桥接)以及Vue.js前端的轻量级、在线可视化ETL编排平台。

2201_76125261的博客 78

Java实现Http/Https请求的方式

        工作中发现很多服务都是通过Http来提供服务:各模块之间通过Http来请求数据、外部服务例如各种Api(微信公众号小程序接口等)。作为用Java为开发语言的后端开发,实现Http请求的方式有原始Socket、URLConnection、HttpURLConnection、第三方工具HttpClient等。网络上已经有很多前人做了归纳,这里做个笔记:       1. java.ne...

流浪的虾壳 8160

【YOLOv11】087、YOLOv11多任务学习:检测、分割、分类联合学习

摘要: 工业质检场景中,多任务模型(检测、分类、分割)的需求日益增长。针对边缘设备部署的挑战,本文提出基于YOLOv11的多任务学习方案。通过共享主干网络和设计分支头(检测、分割、分类),实现高效推理;采用动态权重平衡策略解决多任务损失不平衡问题;并优化数据流处理(支持部分标注)和推理剪裁(按需启用分支)。实验表明,该方法在Jetson Orin上帧率提升3倍,内存占用减少40%,为工业质检提供了轻量高效的解决方案。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 446

【目标检测】基于yolov5的道路坑洼检测(附代码和数据集)

基于yolov5的道路坑洼检测(附代码和数据集)

学无止境、积少成多、厚积薄发 4620

java 实现https请求

直接上代码 package util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.security.cert.CertificateException; import.

QWERTY55555的专栏 1793

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java https 实现_java实现https,https接口请求

/**********************https 接口'*******************//*** 安全证书管理器*/public class MyX509TrustManager implements X509TrustManager {@Overridepublic void checkClientTrusted(final X509Certificate[] chain,fin...

weixin_30975237的博客 591

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java 实现 HTTPS 请求

代码】java实现HTTPS请求。

wangcq0的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java https post get请求_Java实现Https发送get和post请求

本文摘自classinstance.cn。我们工作中经常需要请求第三方或者自己项目中一些接口,有post和get请求,http协议的实现起来很简单,那么https呢?java中如何实现发送https请求并得到响应数据?java中带了javax.net.ssl.HttpsURLConnection类,可以实现https请求。下面直接分享我的工具类HttpUtil类,HttpUtil有两个方法http...

weixin_39587822的博客 2752

java get https_java 实现https请求

package cn.ljs.util.InterfaceDemo;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItem;import org.apache.commons.io.IOUtils;import org.apache.http.HttpE...

weixin_33369808的博客 370

java写https 接口_java实现https,https接口请求

创建多线程时,如果使用同一个runnable对象,则多个线程共享一个runnable资源 public class MyThread implements Runnable {int i;@Overridepublic void run() {while(true){try {Thread.sleep((long)Math./**********************https 接口'****...

weixin_42501331的博客 1332

java实现http及https请求(get及post方式)

java实现http请求 import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.h

LazyCancerPatiens的博客 1619

Java实现的Https请求工具类

Java实现的Https请求工具类 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了Java语言编写的Https请求工具类,旨在帮助开发者轻松实现安全的 Https 网络请求。该工具类封装了常用的 Https 请求方法,简化了开发流程,提高了代码的复用性。 功能特点 支持Https协议的GET、POST等请求方式。 自动处理SSL证书验证,确保通信安全。 易于集成和...

gitblog_06704的博客 420

Java-HTTPClient实现HTTPS请求

目前只实现了https的GET请求,后续还会继续更新 一、GET请求 public static void submitGet() { try { //显示https握手过程,方便调试 // System.setProperty("javax.net.debug", "all"); //调试双向认证使用,暂不使用 SSLContext sslconte...

aliaichidantong的博客 8041

java实现http/https请求

在Java中,有多种方式可以实现HTTP或HTTPS请求。以下是使用第三方库Apache HttpClient来实现HTTP/HTTPS请求的工具类。

weixin_58494422的博客 1874
上一篇: java 后台一次null值踩坑记
下一篇: dlib和face_recognition安装
lufeiRversing
博客等级 码龄11年 2粉丝 5原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值