httpsClient实例

  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStream;
  9. import java.net.URL;
  10. import java.util.HashMap;
  11. import java.util.Iterator;
  12. import java.util.Map;
  13. import javax.el.PropertyNotFoundException;
  14. import javax.net.ssl.HostnameVerifier;
  15. import javax.net.ssl.HttpsURLConnection;
  16. import javax.net.ssl.SSLSession;
  17. /**
  18. * https访问工具类
  19. * @author Cat
  20. *
  21. */
  22. public class HttpsClient {
  23. //读超时30s
  24. private final int timeout = 30000;
  25. private Map<String, String>   reqProperty = null;
  26. private String reqEncode = "UTF-8";
  27. private String respEncode = "UTF-8";
  28. public HttpsClient(){
  29. String trustStore = System.getProperty("javax.net.ssl.trustStore");
  30. //抑制证书域名与实际域名不匹配的警告
  31. HostnameVerifier hv = new HostnameVerifier() {
  32. public boolean verify(String urlHostName, SSLSession session) {
  33. System.out.println("Warning: URL Host: " + urlHostName
  34. + " vs. " + session.getPeerHost());
  35. return true;
  36. }
  37. };
  38. HttpsURLConnection.setDefaultHostnameVerifier(hv);
  39. //初始化请求参数
  40. reqProperty = new HashMap<String, String>();
  41. reqProperty.put("Content-Type", "text/xml");
  42. }
  43. //设置请求参数
  44. public void setRequestProperty(Map<String, String> reqProperty) {
  45. this.reqProperty.putAll(reqProperty);
  46. }
  47. public String doGet(String urlstr) throws IOException {
  48. URL url = new URL(urlstr);
  49. HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
  50. fetchReqMap(connection);//设置请求属性
  51. connection.setReadTimeout(timeout);
  52. connection.setDoOutput(false); // true for POST, false for GET
  53. connection.setDoInput(true);
  54. connection.setRequestMethod("GET");
  55. connection.setUseCaches(false);
  56. String aLine = null;
  57. String ret = "";
  58. InputStream is = connection.getInputStream();
  59. BufferedReader aReader = new BufferedReader(new InputStreamReader(is, this.getRespEncode()));
  60. while ((aLine = aReader.readLine()) != null) {
  61. ret += aLine+ "\r\n";;
  62. }
  63. aReader.close();
  64. connection.disconnect();
  65. return ret;
  66. }
  67. public String doPost(String urlstr,byte data[]) throws IOException {
  68. URL url = new URL(urlstr);
  69. HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
  70. fetchReqMap(connection);
  71. //      connection.setRequestProperty("SOAPAction","https://hms.wellcare.cn:8443/services/EnergyData");
  72. connection.setReadTimeout(timeout);
  73. connection.setDoOutput(true); // true for POST, false for GET
  74. connection.setDoInput(true);
  75. connection.setRequestMethod("POST");
  76. connection.setUseCaches(false);
  77. //写入post数据
  78. OutputStream out = connection.getOutputStream();
  79. out.write(data);
  80. //读出反馈结果
  81. String aLine = null;
  82. String ret = "";
  83. InputStream is = connection.getInputStream();
  84. BufferedReader aReader = new BufferedReader(new InputStreamReader(is, this.getRespEncode()));
  85. while ((aLine = aReader.readLine()) != null) {
  86. ret += aLine + "\r\n";
  87. }
  88. aReader.close();
  89. connection.disconnect();
  90. return ret;
  91. }
  92. /**
  93. * 直接将文件按二进制写入请求
  94. * @param urlstr
  95. * @param inputFile
  96. * @return
  97. * @throws IOException
  98. */
  99. public String doPost(String urlstr,File inputFile) throws IOException{
  100. FileInputStream fis = new FileInputStream(inputFile);
  101. byte[] data = new byte[(int) inputFile.length()];
  102. fis.read(data);
  103. fis.close();
  104. return doPost(urlstr, data);
  105. }
  106. /**
  107. * 字符串俺reqEncode编码方式二级制发送
  108. * @param urlstr
  109. * @param inputStr
  110. * @return
  111. * @throws IOException
  112. */
  113. public String doPost(String urlstr,String inputStr) throws IOException{
  114. byte[] data = inputStr.getBytes(this.getReqEncode());
  115. return doPost(urlstr, data);
  116. }
  117. private void fetchReqMap(HttpsURLConnection connection){
  118. Iterator<String> iterator = this.reqProperty.keySet().iterator();
  119. while(iterator.hasNext()){
  120. String key = iterator.next();
  121. connection.setRequestProperty(key, this.reqProperty.get(key));
  122. }
  123. }
  124. public void setRespEncode(String respEncode) {
  125. this.respEncode = respEncode;
  126. }
  127. public String getRespEncode() {
  128. return respEncode;
  129. }
  130. public void setReqEncode(String reqEncode) {
  131. this.reqEncode = reqEncode;
  132. }
  133. public String getReqEncode() {
  134. return reqEncode;
  135. }
  136. }
时间: 2024-10-28 01:48:50

httpsClient实例的相关文章

solr分布式索引【实战一、分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例】

1 private static Properties prop = new Properties(); 2 3 private static String confFilePath = "conf" + File.separator + "config.properties";// 配置文件目录 4 static { 5 // 加载properties 6 InputStream is = null; 7 InputStreamReader isr = null;

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例

1.系统版本信息 System:Windows旗舰版 Service Pack1 Kettle版本:6.1.0.1-196 JDK版本:1.8.0_72 2.连接数据库 本次实例连接数据库时使用全局变量. 2.1 创建新转换:spoon启动后,点击Ctrl+N创建新转换 2.2 在新转换界面中,右键点击DB连接,系统会弹出[数据库连接]界面. windows系统环境下,可用${}获取变量的内容. 说明: 连接名称:配置数据源使用名称.(必填) 主机名称:数据库主机IP地址,此处演示使用本地IP(

ORACLE11g R2【RAC+ASM→单实例FS】

ORACLE11g R2[RAC+ASM→单实例FS] 11g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境:   primary standby OS Hostname node1,node2 std OS Version RHEL6.5 RHEL6.5 DB Version 11.2.0.4 11.2.0.4 db_name stephen stephen db_unique_name stephen standby service_names stephen

Laravel 5.4 中的异常处理器和HTTP异常处理实例教程

错误和异常是处理程序开发中不可回避的议题,在本地开发中我们往往希望能捕获程序抛出的异常并将其显示打印出来,以便直观的知道程序在哪里出了问题并予以解决,而在线上环境我们不希望将程序错误或异常显示在浏览器中(出于安全考虑),这个时候我们仍然要捕获异常,只不过不是显示到浏览器中,而是记录到日志中,方便日后排查问题. 百牛信息技术bainiu.ltd整理发布于博客园 Laravel当然支持PHP原生的错误和异常处理,但是在此基础上进行了一些封装处理,从而更方便在不同开发环境切换以及对错误和异常的处理.

Hibernate简述及入门实例

一.Hibernate简述 总的概括,Hibernate是一个ORM的轻量级持久层框架,解决了对象和关系数据库中表的不匹配问题(阻抗不匹配)以及拥有开发代码不用去继承hibernate类或接口的优势(无侵入性).hibernate框架实现使得开发人员可以避免反复地编写javajdbc部分代码,应用面向对象的思维操作关系型数据库. 二.使用myeclipse创建hibernate实例两种方法(以hibernate3.5.2及mysql为例) a)手动编写hibernate.cfg.xml及*.hb

linux下mysql多实例安装(转)

转自:http://www.cnblogs.com/xuchenliang/p/6843990.html 1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务:: 1.2.MySQL多实例的特点有以下几点 1:有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务. 2:节约服务器资源 3:资源互相

微信小程序实例教程(一)

序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志. 1. 获取微信小程序的 AppID 首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号.注意不可直接使用服务号或订阅号的 AppID. 利用提供的帐号,登录https

mybatis中的mapper接口文件以及example类的实例函数以及详解

##Example example = new ##Example(); example.setOrderByClause("字段名 ASC"); //升序排列,desc为降序排列. example.setDistinct(false)//去除重复,boolean型,true为选择不重复的记录. Criteria criteria = new Example().createCriteria(); is null;is not null; equal to(value);not equ