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. }

httpsClient实例的更多相关文章

  1. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  2. Libcurl的编译_HTTP/HTTPSclient源代码演示样例

    HTTP/HTTPSclient源代码演示样例 环境:  zlib-1.2.8  openssl-1.0.1g  curl-7.36 Author:  Kagula LastUpdateDate: 2 ...

  3. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  4. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  5. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  6. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  7. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

  8. UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)

    前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...

  9. echarts+php+mysql 绘图实例

    最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...

随机推荐

  1. (转)MongoDB分片实战 集群搭建

    环境准备 Linux环境 主机 OS 备注 192.168.32.13 CentOS6.3 64位 普通PC 192.168.71.43 CentOS6.2 64位 服务器,NUMA CPU架构 Mo ...

  2. 《锋利的jQuery》心得笔记--Four Sections

    第八章 1.    当父元素设置position:relative的时候,子元素设置position:absolute.这个子元素设置在父元素的任何位置. 第九章 1.    对可视区进行纠正,通知浏 ...

  3. Eclipse 快捷键 快捷输入

    快捷键: 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如appli ...

  4. nyoj---t448(寻找最大数)

    描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888   输入 第一行输入一个正整数T,表示有T组测 ...

  5. CityEngine2012(32位)安装

    今天下午把CityEngine2012装好了,既然Esri大力推CityEngine作为其三维建模软件,那就学习一下,还好没花多长时间搞定破解版,以前装Erdas,南方CASS,AutoCAD那些该死 ...

  6. iOS Foundation框架 -2.常用集合类简单总结

    Foundation框架中常用的类有:NSString.NSArray.NSSet.NSDictionary 以及它们对应的子类 NSMutableString.NSMutableArray.NSMu ...

  7. 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时)

    今天忽然间发现远程连接别人数据库会出现  已成功与服务器建立连接,但是在登录前的握手期间发生错误. (provider: SSL Provider, error: 0 - 等待的操作过时)  这种情况 ...

  8. 应用js改变问章字体大小

    刚来公司的时候领导给分配的都是一些简单的简单的简单的.....任务 一次叫我把文章的字体大小变换功能写出来.在网上搜了很多都不管用!不过功夫不负有心人还是被我找到了!拿出来分享下! <scrip ...

  9. 生动有趣的动画Toast--第三方开源--NiftyNotification

    NiftyNotification在github上的项目主页是:https://github.com/sd6352051/NiftyNotificationNiftyNotification本身又依赖 ...

  10. Linux 使用退格键时出现^H解决方法

    当我们再和脚本交互的时候,在终端上输错了内容,使用退格键,屏幕上会出现乱码,比如 ^H.^H不是H键的意思,是backspace. 主要是当你的终端backspace有问题的时候才需要设置. 解决方法 ...