httpsClient实例
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.URL;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import javax.el.PropertyNotFoundException;
- import javax.net.ssl.HostnameVerifier;
- import javax.net.ssl.HttpsURLConnection;
- import javax.net.ssl.SSLSession;
- /**
- * https访问工具类
- * @author Cat
- *
- */
- public class HttpsClient {
- //读超时30s
- private final int timeout = 30000;
- private Map<String, String> reqProperty = null;
- private String reqEncode = "UTF-8";
- private String respEncode = "UTF-8";
- public HttpsClient(){
- String trustStore = System.getProperty("javax.net.ssl.trustStore");
- //抑制证书域名与实际域名不匹配的警告
- HostnameVerifier hv = new HostnameVerifier() {
- public boolean verify(String urlHostName, SSLSession session) {
- System.out.println("Warning: URL Host: " + urlHostName
- + " vs. " + session.getPeerHost());
- return true;
- }
- };
- HttpsURLConnection.setDefaultHostnameVerifier(hv);
- //初始化请求参数
- reqProperty = new HashMap<String, String>();
- reqProperty.put("Content-Type", "text/xml");
- }
- //设置请求参数
- public void setRequestProperty(Map<String, String> reqProperty) {
- this.reqProperty.putAll(reqProperty);
- }
- public String doGet(String urlstr) throws IOException {
- URL url = new URL(urlstr);
- HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
- fetchReqMap(connection);//设置请求属性
- connection.setReadTimeout(timeout);
- connection.setDoOutput(false); // true for POST, false for GET
- connection.setDoInput(true);
- connection.setRequestMethod("GET");
- connection.setUseCaches(false);
- String aLine = null;
- String ret = "";
- InputStream is = connection.getInputStream();
- BufferedReader aReader = new BufferedReader(new InputStreamReader(is, this.getRespEncode()));
- while ((aLine = aReader.readLine()) != null) {
- ret += aLine+ "\r\n";;
- }
- aReader.close();
- connection.disconnect();
- return ret;
- }
- public String doPost(String urlstr,byte data[]) throws IOException {
- URL url = new URL(urlstr);
- HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
- fetchReqMap(connection);
- // connection.setRequestProperty("SOAPAction","https://hms.wellcare.cn:8443/services/EnergyData");
- connection.setReadTimeout(timeout);
- connection.setDoOutput(true); // true for POST, false for GET
- connection.setDoInput(true);
- connection.setRequestMethod("POST");
- connection.setUseCaches(false);
- //写入post数据
- OutputStream out = connection.getOutputStream();
- out.write(data);
- //读出反馈结果
- String aLine = null;
- String ret = "";
- InputStream is = connection.getInputStream();
- BufferedReader aReader = new BufferedReader(new InputStreamReader(is, this.getRespEncode()));
- while ((aLine = aReader.readLine()) != null) {
- ret += aLine + "\r\n";
- }
- aReader.close();
- connection.disconnect();
- return ret;
- }
- /**
- * 直接将文件按二进制写入请求
- * @param urlstr
- * @param inputFile
- * @return
- * @throws IOException
- */
- public String doPost(String urlstr,File inputFile) throws IOException{
- FileInputStream fis = new FileInputStream(inputFile);
- byte[] data = new byte[(int) inputFile.length()];
- fis.read(data);
- fis.close();
- return doPost(urlstr, data);
- }
- /**
- * 字符串俺reqEncode编码方式二级制发送
- * @param urlstr
- * @param inputStr
- * @return
- * @throws IOException
- */
- public String doPost(String urlstr,String inputStr) throws IOException{
- byte[] data = inputStr.getBytes(this.getReqEncode());
- return doPost(urlstr, data);
- }
- private void fetchReqMap(HttpsURLConnection connection){
- Iterator<String> iterator = this.reqProperty.keySet().iterator();
- while(iterator.hasNext()){
- String key = iterator.next();
- connection.setRequestProperty(key, this.reqProperty.get(key));
- }
- }
- public void setRespEncode(String respEncode) {
- this.respEncode = respEncode;
- }
- public String getRespEncode() {
- return respEncode;
- }
- public void setReqEncode(String reqEncode) {
- this.reqEncode = reqEncode;
- }
- public String getReqEncode() {
- return reqEncode;
- }
- }
httpsClient实例的更多相关文章
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- Libcurl的编译_HTTP/HTTPSclient源代码演示样例
HTTP/HTTPSclient源代码演示样例 环境: zlib-1.2.8 openssl-1.0.1g curl-7.36 Author: Kagula LastUpdateDate: 2 ...
- js-静态、原型、实例属性
本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...
- ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...
- EntityFramework Core 1.1是如何创建DbContext实例的呢?
前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...
- redis集成到Springmvc中及使用实例
redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...
- 流程开发Activiti 与SpringMVC整合实例
流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...
- UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)
前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...
- echarts+php+mysql 绘图实例
最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...
随机推荐
- 转: 理解Python的With语句
Python’s with statement provides a very convenient way of dealing with the situation where you have ...
- web前端的十种jquery特效及源码下载
1.纯CSS3实现自定义Tooltip边框 涂鸦风格 这是一款用纯CSS3打造的自定义Tooltip边框的应用,之前我们讨论过如何用CSS3来实现不同样式的Tooltip,今天的这款Tooltip却可 ...
- 使用记事本+CSC编译程序
本次学习主要阐明.NET开发可以不使用VS,也能像Java一样使用命令窗口.但实际意义不大. 诸位看管不必太留意.(仅供留着给公司新人,树(tree)新(new)风(bee)用.) 1.新建一个文本文 ...
- VIM小技巧之文件名补全
恩,这两天在看<简明Python教程>,那里面作者建议写代码的时候前面的注释写上文件名,写上调用的解释器,比如这样: 恩,然后我当然不可能每回新建一个文件,就要在开头写上一大串东西啊,vi ...
- ubuntu bash提示找不到文件或目录
我在ubuntu上安装好后交叉编译器,用tab键也可以找到这个交叉编译器,但执行的时候总是提示:bash:xxx找不到文件或目录. 解决方法:安装lib32z1 命令:apt-get install ...
- WebStorm 快捷键收藏
快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/-/ ) Ctrl+X 或 Ctrl+Y 删除一行 Shift+F6 重构-重命名 Alt+~vcs操作 Alt+~ 7关闭重 ...
- referenceerror wx is not defined 微信JsSdk开发
如果你和我一样遇到了“referenceerror wx is not defined”错误,很有可能是jweixin-1.0.0.js与你其它某js冲突. 解决办法: <script type ...
- Microsoft Azure Preview portal 以及Preview Features介绍
首先mooncake版本并不提供此类功能. 国际版会把将来推出的功能提供Preview,而且是免费的,有想研究未来技术以及的同学可以尝试 通过以下地址进入国际版,往下拉 http://azure.mi ...
- posix 消息队列
注意 在涉及到posix消息的函数时, gcc 编译时要加-lrt参数, 如 gcc -lrt unpipc.c mqpack.c send.c -o send gcc -lrt unpipc.c m ...
- MySQL 多实例数据库还原脚本-备份集与端口对应
版本:5.5.14 OS: ConetOS 6.3 1.创建recover.sh [root@yoon export]# vi recover.sh #!/bin/bash bakdir=/exp ...