【java】java访问https并验证账号密码

news2025/1/13 13:35:07

java访问https,获取页面或者数据时,需要证书和账号密码的验证。

一 获取CRT证书

获取网站的证书,拿到证书后可能是crt格式,可以使用下面的命令转为p12格式

openssl pkcs12 -export -in Mycert.crt -inkey Mykey.key -out Mycert.p12 -name "Mycert"

Mycert.crt是证书,Mykey.key是生成证书同时生成的key,最终转出Mycert.p12

二 访问https,不需要账号密码

比如访问如下地址

https://hf.anjuke.com/esf-ajax/community/pc/autocomplete?city_id=33&kw=%E9%9D%92%E9%98%B3%E6%96%B0%E6%9D%91&type=3

public static void GetSSLJson4() throws Exception {
		
		final String certFile = "C:/Users/682556/wux-presto.seagate.com.p12";//证书
        final String storePass = "presto-seagate";//证书的密码
        final String keyPass = "presto-seagate";//key的密码,两者相同

        KeyStore keyStore;
        try (FileInputStream fis = new FileInputStream(certFile)) {
            keyStore = KeyStore.getInstance("PKCS12"); // or "JKS"
            keyStore.load(fis, storePass.toCharArray());//装载证书
        }

        SSLContextBuilder sslContextBuilder = SSLContexts.custom();
        sslContextBuilder.loadTrustMaterial(TrustAllStrategy.INSTANCE);
        sslContextBuilder.loadKeyMaterial(keyStore, keyPass.toCharArray());
        SSLContext sslContext = sslContextBuilder.build();

        HttpClientBuilder httpClientBuilder = HttpClients.custom();
        httpClientBuilder.setSSLContext(sslContext);
        httpClientBuilder.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
        
        CloseableHttpClient httpClient = httpClientBuilder.build();
        HttpGet get = new HttpGet("https://hf.anjuke.com/esf-ajax/community/pc/autocomplete?city_id=33&kw=%E9%9D%92%E9%98%B3%E6%96%B0%E6%9D%91&type=3");
	
        CloseableHttpResponse response = null;
        response = httpClient.execute(get);
        
        HttpEntity entity = response.getEntity();
        String result = EntityUtils.toString(entity);
        System.out.println(result);
	}

运行上面的方法,获得json返回值

{"status":"ok","serverTime":{"year":2023,"month":"JUNE","dayOfWeek":"FRIDAY","dayOfYear":153,"era":"CE","chronology":{"calendarType":"iso8601","id":"ISO"},"leapYear":false,"monthValue":6,"dayOfMonth":2},"data":[{"id":337953,"name":"青阳新村","address":"蜀山-青阳北路-青阳北路31号","type":4,"areaId":3882,"areaName":"蜀山","price":"13818","listName":"qingyangxincun","flag":{"isCommission":"0"}}]}

三 访问https,需要账号密码

以下地址是我内部地址,需要登录输入账号密码

https://wux-presto.seagate.com:31265/v1/query/20230602_070334_01069_r2s92?pretty

https内容json

 

 Java代码

public static void GetSSLJson4() throws Exception {
		
		final String certFile = "C:/Users/682556/wux-presto.seagate.com.p12";//证书
        final String storePass = "presto-seagate";//证书的密码
        final String keyPass = "presto-seagate";//key的密码,两者相同

        KeyStore keyStore;
        try (FileInputStream fis = new FileInputStream(certFile)) {
            keyStore = KeyStore.getInstance("PKCS12"); // or "JKS"
            keyStore.load(fis, storePass.toCharArray());//装载证书
        }

        SSLContextBuilder sslContextBuilder = SSLContexts.custom();
        sslContextBuilder.loadTrustMaterial(TrustAllStrategy.INSTANCE);
        sslContextBuilder.loadKeyMaterial(keyStore, keyPass.toCharArray());
        SSLContext sslContext = sslContextBuilder.build();

        HttpClientBuilder httpClientBuilder = HttpClients.custom();
        httpClientBuilder.setSSLContext(sslContext);
        httpClientBuilder.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
        
        //设置https网页账号密码
        CredentialsProvider provider = new BasicCredentialsProvider();
        provider.setCredentials(new AuthScope("wux-presto.seagate.com",31265), new UsernamePasswordCredentials("账号", "密码"));
        
        CloseableHttpClient httpClient = httpClientBuilder.setDefaultCredentialsProvider(provider).build();
        HttpGet get = new HttpGet("https://wux-presto.seagate.com:31265/v1/query/20230602_070334_01069_r2s92?pretty");
	
        CloseableHttpResponse response = null;
        response = httpClient.execute(get);
        
        HttpEntity entity = response.getEntity();
        String result = EntityUtils.toString(entity,"UTF-8");
        System.out.println(result);
	}

运行以上程序,返回结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0基础学习VR全景平台篇第35篇:场景功能-细节

本期为大家带来蛙色VR平台,场景管理—细节功能操作。 功能位置示意 一、本功能将用在哪里? 细节功能,用于展示VR漫游作、大像素、高清矩阵作品中细微不容易发现,但却又比较有亮点或者能起到关键作用的画面。 通过在全景图中添加…

javaWeb ssh课程资源网站myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh课程资源网站系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

字节的测试面试题,你觉得很难吗?不是有手就行....

年前的时候,我的一个粉丝跟我说,他在面试美团的自动化测试岗的时候,不幸挂掉了。 越想越可惜,回想面试经过,好好总结了几个点,发现面试没过的主要原因是在几个关键的问题没有给到面试官想要的答案 字节的…

6-HEX, SE,引物荧光标记试剂,胺反应性琥珀酰亚胺酯,广泛用于nucleic acid测序和相关研究

6-HEX, SE | 6-HEX,SE [6-羧基-2,4,4,5,7,7-六氯荧光素,琥珀酰亚胺酯] |CAS:N/A | 纯度:95% (文章资料汇总来源于:陕西新研博美生物科技有限公司小编MISSwu)​ 结构…

Android Cannot resolve symbol 找不到资源解决方案

一、介绍 在android开发中,我们经常会发现依赖了系统提供的库,但是无法引用,或者找不到, Cannot resolve symbol style/Theme.AppCompat.NoActionBar ,报红。这些最经典的无法加载。 出现这个原因并不是你项目的原因&…

手把手教你如何正确永久使用Microsoft Office365?

office2019和office 365有什么区别的呢?为什么越来越多的人更加钟爱office365。简单来说office 2019的零售版本属于一次售出永久使用,价格上比较贵,而且功能上也不会再有更新。而office 365是一种基于云的订阅服务,我们花钱买的是…

Datax同步MySQL到ES

Datax同步MySQL到ES 1、在MySQL中建表2、在ES建立索引3、构建从MySQL到ES的Datax的Json任务4、运行mysql2es.json脚本以下是工作中做过的ETL,如有需要,可以私信沟通交流,互相学习,一起进步 1、在MySQL中建表 建表语句 CREATE TABL…

如何在Flutter 中启用空安全

目录 Step 1: 开启空安全设置 Step 2:检查可升级的三方库 Step 3:升级三方库 Step 4:代码适配支持空安全 Step 1: 开启空安全设置 Flutter 2默认启用了空安全,所以通过Flutter 2创建的项目是已经开启了空安全的检查的,不知道自己是什么版本的可以通…

【MCS-51单片机汇编语言】期末复习总结①——常见指令汇总(题型一)

文章目录 七大寻址方式重要指令转移堆栈加减乘除位操作跳转条件转移子程序常考题型 七大寻址方式 立即寻址:通过一个立即数来指定存储单元的地址,例如#41H;寄存器寻址:Rn(n0~7),A,B&#xff0c…

自学软件测试,一般人我劝你还是算了吧

软件测试自学是完全可以的,但是这句话并不代表人人都可以自学。 想转行软件测试,纯自学会遇到以下8个问题: 1、自学需要很高的自律性,你能做到吗? 2、自学在学习过程中会碰到很多困难,你都能解决吗&#xf…

直播入门手册

直播除了带货,现在越来越成了分享知识,增近主播和粉近距离互动的平台。最近看到抖音上越来越多的主播进行编程经验的分享,这是一个很好的传播知识的方式,以前我们学习编程技术一般看视频,其实视频的互动性没有直播那么…

智能家居数据分析:语音交互为用户偏好模式,使用最高达72%

哈喽大家好,近些年来,智能家居行业的发展无比迅速,同时,最近两年来人工智能技术的不断突破,对智能家居有着无与伦比的推动力。本期将为大家介绍下智能家居的行业形势。 通过数据可视化平台把报表数据处理后展示出来的…

(4)NUC980 RootFs

Buildroot是一个开源的嵌入式Linux系统构建工具,它可以帮助用户自动化构建Linux系统的各个部分,包括Linux内核、库、文件系统、应用程序等。通过Buildroot,用户可以根据需要选择和配置所需的软件包,从而构建一个定制化的Linux系统…

Nginx网站服务——编译安装及系统服务添加

Nginx网站服务——编译安装及系统服务添加 一、Nginx的相关知识1.Nginx的简介2. Apache与Nginx的区别3.Apache的优势4.Nginx的优势 二、Nginx编译安装1.关闭防火墙,将安装nginx所需软件包传到/opt目录下2.安装相关的依赖包3.创建运行用户、组4.编译安装Nginx5.检查、…

【Rust学习】web框架 Axum,提供REST API

cargo-watch:有修改就重启服务器,类似java web的热部署 安装:cargo install cargo-watch 使用:cargo watch -x run 这样每次有修改就会自动重启web服务 vscode插件Thunder Client(类似postman) hello,world 建议用cargo add的方式添加 […

视频压缩存储解决方案

一、背景介绍 随着视频技术的不断发展,人们对视频质量和存储需求的要求也越来越高。而视频文件的大小往往会给存储和传输带来诸多困扰。因此,如何有效地压缩视频文件成为了一个非常重要的问题。 二、压缩算法简介 有损压缩:通过去除视频中的…

SpringBoot3整合SpringSecurity,实现自定义接口权限过滤

接口权限过滤是指对于某些接口或功能,系统通过设定一定的权限规则,只允许经过身份认证且拥有相应权限的用户或应用程序进行访问和操作。这种技术可以有效地保护系统资源和数据安全,防止未授权的用户或程序进行恶意操作或非法访问。通常情况下…

广州华锐互动:智能虚拟人运用到短视频行业能带来哪些价值?

随着科学技术的不断发展,虚拟数字人呈现飞跃式发展,各式各样的虚拟数字人进入到我们的视野,而同样作为新风口的短视频行业,也成为了人们日常生活中不可或缺的一部分。那么,将这两者结合起来会带来哪些变化呢&#xff1…

C#开发串口调试助手实现modbusRTU通信

今天给大家搞个项目,跟我来,走过路过不要错过,看大V如何玩C#工业软件开发,搞事的目的是:掌握MODBUSRTU通信协议,掌握简单型串口调试助手开发,掌握串口通信过程 硬件产品:串口RS232温…

中移链资源管理介绍

中移链是基于EOS底层框架,在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。在中移链中主要包括CPU、RAM和NET三种资源。CPU资源是用于执行智能合约的计算能力,RAM资源用于存储智能合约和其它数据,NET资…