Java进行http请求工具类代码(支持https)
package com.guyezhai.modules.utils; import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.cert.X509Certificate;
import java.util.Map;
import java.util.Map.Entry; import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager; public class HttpUtils { /**
* POST请求远程http页面
*
* @param contentUrl
* @param params
* @return
*/
public static String post(String contentUrl, Map<String, Object> params) {
StringBuilder contentBuilder = new StringBuilder();
HttpURLConnection connection = null;
DataOutputStream out = null;
BufferedReader reader = null;
try {
connection = (HttpURLConnection) new URL(contentUrl).openConnection();
// 设置Socket超时
connection.setConnectTimeout(10000);
connection.setReadTimeout(20000);
// Post 请求不能使用缓存
connection.setUseCaches(false);
// URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
connection.setInstanceFollowRedirects(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestMethod("POST");
connection.setDoOutput(true);// 是否输入参数
// 要注意的是connection.getOutputStream会隐含的进行connect
connection.connect(); out = new DataOutputStream(connection.getOutputStream());
StringBuilder parambBuilder = new StringBuilder();
if (params != null) {
for (Entry<String, Object> e : params.entrySet()) {
parambBuilder.append(e.getKey()).append("=").append(URLEncoder.encode(String.valueOf(e.getValue()), "UTF-8")).append("&");
}
parambBuilder.deleteCharAt(parambBuilder.length() - 1);
}
// DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
out.writeBytes(parambBuilder.toString());
out.flush(); reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); int buffer = 0;
while ((buffer = reader.read()) != -1) {
contentBuilder.append((char) buffer);
} } catch (Exception e) {
// 异常处理
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
} if (connection != null) {
connection.disconnect();
}
}
return contentBuilder.toString();
} /**
* Get方法请求
*
* @param contentUrl
* @return
*/
public static String get(String contentUrl) {
StringBuilder contentBuilder = new StringBuilder();
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
connection = (HttpURLConnection) new URL(contentUrl).openConnection();
// 设置Socket超时
connection.setConnectTimeout(10000);
connection.setReadTimeout(20000);
connection.setRequestMethod("GET");
connection.connect(); reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); int buffer = 0;
while ((buffer = reader.read()) != -1) {
contentBuilder.append((char) buffer);
}
} catch (Exception e) {
// 异常处理
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (connection != null) {
connection.disconnect();
}
}
return contentBuilder.toString();
} /**
* POST请求远程https页面
*
* @param contentUrl
* @param params
* @return
*/
public static String postHttps(String contentUrl, Map<String, Object> params) {
StringBuilder contentBuilder = new StringBuilder();
HttpsURLConnection connection = null;
DataOutputStream out = null;
BufferedReader reader = null;
try {
HostnameVerifier hnv = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}; X509TrustManager trustManager = new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
} @Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
} @Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
}; X509TrustManager[] xtmArray = new X509TrustManager[] { trustManager };
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, xtmArray, new java.security.SecureRandom()); if (sslContext != null) {
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
}
HttpsURLConnection.setDefaultHostnameVerifier(hnv); connection = (HttpsURLConnection) new URL(contentUrl).openConnection();
// 设置Socket超时
connection.setConnectTimeout(10000);
connection.setReadTimeout(20000);
// Post 请求不能使用缓存
connection.setUseCaches(false);
// URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
connection.setInstanceFollowRedirects(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestMethod("POST");
connection.setDoOutput(true);// 是否输入参数
connection.connect(); out = new DataOutputStream(connection.getOutputStream());
StringBuilder parambBuilder = new StringBuilder();
if (params != null) {
for (Entry<String, Object> e : params.entrySet()) {
parambBuilder.append(e.getKey()).append("=").append(URLEncoder.encode(String.valueOf(e.getValue()), "UTF-8")).append("&");
}
parambBuilder.deleteCharAt(parambBuilder.length() - 1);
}
// DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
out.writeBytes(parambBuilder.toString());
out.flush(); reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); int buffer = 0;
while ((buffer = reader.read()) != -1) {
contentBuilder.append((char) buffer);
}
} catch (Exception e) {
// 异常处理
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if (connection != null) {
connection.disconnect();
}
}
return contentBuilder.toString();
} }
Java进行http请求工具类代码(支持https)的更多相关文章
- 基于JAVA原生HTTP请求工具类 httphelper
原文地址;http://lushuifa.iteye.com/blog/2313896 import java.io.BufferedReader; import java.io.BufferedWr ...
- Java之网络请求工具类(依赖:org.apache.http;注:HttpClient 4.4,HttpCore 4.4)
到此处可以去下载依赖包:http://hc.apache.org/downloads.cgi import java.util.List; import org.apache.http.HttpSta ...
- Java模仿http请求工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...
- Java 实现 Http 请求工具类
package com.demo.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- Java 发送 Http请求工具类
HttpClient.java package util; import java.io.BufferedReader; import java.io.IOException; import java ...
- java模板模式项目中使用--封装一个http请求工具类
需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...
- Http请求工具类(Java原生Form+Json)
package com.tzx.cc.common.constant.util; import java.io.IOException; import java.io.InputStream; imp ...
- java jdk原生的http请求工具类
package com.base; import java.io.IOException; import java.io.InputStream; import java.io.InputStream ...
- 我的Android进阶之旅------>Android关于HttpsURLConnection一个忽略Https证书是否正确的Https请求工具类
下面是一个Android HttpsURLConnection忽略Https证书是否正确的Https请求工具类,不需要验证服务器端证书是否正确,也不需要验证服务器证书中的域名是否有效. (PS:建议下 ...
随机推荐
- Right-BICEP要求四则2的测试用例
测试方法:Right-BICEP 测试计划 1.Right-结果是否正确? 2.B-是否所有的边界条件都是正确的? 3.P-是否满足性能要求? 4.是否有乘除法? 5.是否有括号? 6.是否有真分数? ...
- Java 变量和输入输出
一些重要知识 一个源文件里只能有一个public类,其它类数量不限.文件名与public类名相同 JAVA程序严格区分大小写 JAVA应用程序的执行入口是main方法固定写法:public stati ...
- window.open居中显示
window.open中会发现怎么打开的浏览器窗口怎么不在正中间,而且还比较随性,那不是逼死强迫症患者了,所以查了一下资料始终打开的窗口能显示在正中间,下面是js中的代码分享 // url 转向网页的 ...
- 如何将PDF的背景色设置为保护眼睛的苹果绿色
福昕阅读器请戳这里. Adobe Acrobat请戳这里.
- Swagger字段说明
常用字段说明 字段 说明 schemes 使用协议(如:http.https) host 项目地址,这个地址会作为每个接口的url base,拼接起来一起作为防伪地址 consumes 接口默认接收的 ...
- intellij idea 如何将一个普通项目转换为maven项目
1.工程文件下新建文件pom.xml,并填写好内容. 2.在pom.xml 文件上右键 Add as Maven Project.
- dedecms添加新模型
dedecms虽然预设了一些常见网页的功能模型,但是如果需要新的功能则需要自己创建,dedecms也提供了创建新模型的功能,如下: 1.打开后台首页=>核心=>内容模型管理 2.添加新模型 ...
- 发送tcp的时候,数据包是如何拷贝的
发送数据包的时候,用户态的数据包是如何拷贝到内核的kiovec msghd 结构体 icmp是走sock吗? 每一个skb_buffer的大小都是固定的吗?所以有skb_available这样的函数 ...
- js 复制到剪贴板 兼容还得自己想办法
clipboard.js https://github.com/zenorocha/clipboard.js/ 主要问题还是ie8, 可以使用ie 特有的方法 if (window.clipboard ...
- C语言指针【转】
一.C语言指针的概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细 ...