首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Web开发
> 详细
httpsClient实例
时间:
2015-02-28 18:27:10
阅读:
191
评论:
0
收藏:
0
[点我收藏+]
标签:
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实例
标签:
原文地址:http://www.cnblogs.com/Struts-pring/p/4305808.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
36.VUE — 认识 Webpack 和 安装
2021-07-28
【PHP】上传图片翻转问题
2021-07-28
php对数字进行万。亿的转化
2021-07-28
五个 .NET 性能小贴士
2021-07-28
Three.js中显示坐标轴、平面、球体、四方体
2021-07-28
.net 5+ 知新:【1】 .Net 5 基本概念和开发环境搭建
2021-07-27
1.html,css
2021-07-27
基于Docker搭建 Php-fpm + Nginx 环境
2021-07-27
nginx + http + svn
2021-07-27
kubernets kube-proxy的代理 iptables和ipvs
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!