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 ...
随机推荐
- 10款基于HTML5+CSS3实现的超酷源码动画
1.基于Bootstrap的jQuery登录表单 这是一款基于Bootstrap的登录表单,表单的外观自然不用说,沿用了Bootstrap的风格,非常漂亮.这款登录表单有一个经过CSS3处理过的头像图 ...
- 求单链表倒数第m个结点
问题:求单链表倒数第m个结点,要求不准求链表的长度,也不许对链表进行逆转 解:设置两个指针p和q,p.q指向第一个结点.让p先移动到链表的第m个结点,然后p和q同时向后移动,直到p首先到达尾结点.此时 ...
- OpenGL 回顾-——矩形的创建、列表
在使用四点创建矩形时,必须按照顺序,顺时针或者逆时针,不然会错乱.感觉是根据点的顺序依次连线. glBegin(GL_QUADS); glColor3f(1.0,0.0,0.0); glVertex3 ...
- LLVM language 参考手册(译)(6)
模块级内联汇编(Module-Level Inline Assembly) 模块包含“module-level inline assembly”块,这与GCC中的“file scope inline ...
- NDK jni 加载静态库
加载静态库到android,静态库的提供方式有2种, a. 通过源文件来编译静态库 b. 加载已经编译好的静态库 首先我们来看,通过源文件来编译静态库,工程目录如下 第一步:我们来看我们的jni目录, ...
- 使用inotify检测linux目录内文件变化
#include <unistd.h> #include <sys/inotify.h> #include <stdio.h> #include <error ...
- Linux系统环境变量及命令
Linux哪些我们常用,但是用的时候想不起来,这里做一个备忘录. Linux常用的变量: PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 ...
- 转:Android studio Gradle
提高Android Studio中Gradle执行效率 分类: android studio2015-06-26 11:54 2374人阅读 评论(2) 收藏 举报 android studiogra ...
- Factory_Method
class Product { public: virtual ~Product() {} ; }; class ProductA : public Product { public: Product ...
- NetworkInfo 手机中的网络类型
04-27 21:56:54.442: E/NetworkInfo(26457): NetworkInfo: type: mobile[EDGE], state: DISCONNECTED/IDLE, ...