当前位置: 首页 > news >正文

Java访问Https接口

java访问https接口、发送数据、接收数据

1.建立连接

 1 URL url = new URL(urlStr);
 2 //创建SSLContext对象,并使用我们指定的信任管理器初始化
 3 TrustManager[] tm = {new MyX509TrustManager ()}; 
 4 //SSLContext.getInstance(arg0, arg1),注意arg0要与要访问的https接口网站所用的TLS/SSL的版本一致,否则在打开连接时会报握手失败的错            
 5 SSLContext sslContext =SSLContext.getInstance("TLSv1.2","SunJSSE"); 
 6 sslContext.init(null, tm, new java.security.SecureRandom()); 
 7 //从上述SSLContext对象中得到SSLSocketFactory对象
 8 SSLSocketFactory ssf = sslContext.getSocketFactory();
 9 //创建HttpsURLConnection对象,并设置其SSLSocketFactory对象
10 HttpsURLConnection urlCon = (HttpsURLConnection)url.openConnection();
11 urlCon.setSSLSocketFactory(ssf);

2.向https接口发送数据

String str = "xxx";//你要发送的数据
byte[] reqData = str.getBytes();
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setUseCaches(false);
urlCon.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
urlCon.setRequestProperty("Content-length", String.valueOf(reqData.length)); 
DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream());
printout.write(reqData);
printout.flush();
printout.close();

3.接收https接口返回的数据

 1 DataInputStream input = null;
 2 java.io.ByteArrayOutputStream out = null;
 3 input = new DataInputStream(urlCon.getInputStream());
 4 out = new java.io.ByteArrayOutputStream();
 5 byte[] bufferByte = new byte[256];
 6 int l = -1;
 7 int downloadSize = 0;
 8 while ((l = input.read(bufferByte)) > -1) {
 9     downloadSize += l;
10     out.write(bufferByte, 0, l);
11     out.flush();
12 }
13 String resData = out.toString();

 

转载于:https://www.cnblogs.com/kylyww/p/8191456.html

相关文章:

  • 网上舆情信息监测工作怎么开展的方法
  • weakSelf 和 strongSelf的区别和用处
  • 舆情分析系统技术解决方案及作用
  • 校园舆情信息热点话题监测解决方案
  • 转:ASP.NET MVC 将IListT导出Excel文档的泛型类
  • 信息惠民政策网络舆情怎么监测的系统技术解决方案
  • 微信扫码登录-JAVA
  • 今日新网络舆情信息监测收集技术解决办法
  • Spring深入研究:方法注入
  • 政企舆情监测软件好不好评判方法及使用功能介绍
  • oracle查看被锁的表和解锁
  • 网络舆情信息传播动态监测查询方法
  • python基础---递归函数 知识点自查填空题
  • 百度平台上的网络舆情信息怎么搜查的方法
  • 互联网舆情数据信息挖掘分析的方法
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Centos6.8 使用rpm安装mysql5.7
  • docker容器内的网络抓包
  • js操作时间(持续更新)
  • Linux后台研发超实用命令总结
  • Python socket服务器端、客户端传送信息
  • python3 使用 asyncio 代替线程
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue 2.3、2.4 知识点小结
  • Web标准制定过程
  • 电商搜索引擎的架构设计和性能优化
  • 类orAPI - 收藏集 - 掘金
  • 设计模式走一遍---观察者模式
  • 算法系列——算法入门之递归分而治之思想的实现
  • 写给高年级小学生看的《Bash 指南》
  • 优秀架构师必须掌握的架构思维
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​secrets --- 生成管理密码的安全随机数​
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #android不同版本废弃api,新api。
  • #HarmonyOS:基础语法
  • #WEB前端(HTML属性)
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (差分)胡桃爱原石
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (剑指Offer)面试题34:丑数
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十五)使用Nexus创建Maven私服
  • (一)u-boot-nand.bin的下载
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m