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 ...
随机推荐
- UI5_HomeWorkCompanyViewController
// // ItemCompany.h // UI5_HomeWork // // Created by zhangxueming on 15/7/3. // Copyright (c) 2015年 ...
- JDBC连接MySQL数据库及示例
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一 ...
- CXF和Axis的比较【转】
在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).对于服务开发人员来说,AXIS和CXF一定都不会陌生.这两个产品都是Apache孵化器下面的Web ...
- Android基本知识
Android是Google公司于2007年发布的基于Linux内核的手机操作系统.应用层主要以java为编程语言,应用层分为两层,函数层(Library) 和虚拟机(Virtual).中间 ...
- Vim保存文件命令 ":wq" 与 ":x" 的区别
CSDN转载 [1] Vim是Unix/Linux系统最常用的编辑器之一,在保存文件时,我通常选择":wq",因为最开始学习vim的时候,就只记住了几个常用的命令:也没有细究命令的 ...
- JavaScript 中undefined,null,NaN的区别
1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型.var a1;var a2 = true;va ...
- VIM小技巧之文件名补全
恩,这两天在看<简明Python教程>,那里面作者建议写代码的时候前面的注释写上文件名,写上调用的解释器,比如这样: 恩,然后我当然不可能每回新建一个文件,就要在开头写上一大串东西啊,vi ...
- background-clip 背景图片做适当的裁剪
background-clip 用来将背景图片做适当的裁剪以适应实际需要. 语法: background-clip : border-box | padding-box | content-box | ...
- stanford moss
A System for Detecting Software Plagiarism UPDATES May 18, 2014 Community contributions (incuding a ...
- header页头内容整理
meta标签 <meta charset="UTF-8"/> <!--视窗宽度--> <meta name="viewport" ...