jdk 调用http https/请求
来源:互联网 发布:分销系统源码 编辑:程序博客网 时间:2024/06/15 05:22
package cn.com.glxt.http;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cn.com.glxt.common.ResultVO;
import com.alibaba.fastjson.JSONObject;
public class HttpClientUtil {
private static final Log LOGGER = LogFactory.getFactory().getInstance(HttpClientUtil.class);
public static void main(String[] args) {
String url = "https://domain/services/oauth2/token";
String charset = "UTF-8";
Map<String,String> params = new HashMap<String,String>();
Map<String,String> header = new HashMap<String, String>();
header.put("Content-Type", "application/x-www-form-urlencoded");
ResultVO resultVO = sendHttps(url,null,null,params,header,charset);
if(resultVO.isSuccess()){
JSONObject json = JSONObject.parseObject(resultVO.getData().toString());
String data = "{\"key\":\"value\"}";
header.put("Content-Type", "application/json");
resultVO = sendHttps(json.getString("instance_url"), null,data,null, header, charset);
if(resultVO.isSuccess()){
System.out.println(resultVO.getData().toString());
}else{
System.out.println(resultVO.getMessage());
}
}else{
System.out.println(resultVO.getMessage());
}
}
/**
* http请求
* @param url
* @param method
* @param body
* @param params
* @param header
* @param charset
* @return
*/
public static ResultVO sendHttp(String url,String method,String body,Map<String, String> params,Map<String, String> header,String charset){
if(null == method || "".equals(method)){
method ="POST";
}
if(null == charset || "".equals(charset)){
charset = "UTF-8";
}
OutputStreamWriter out = null;
BufferedReader in = null;
HttpURLConnection conn = null;
String result = null;
try {
URL realUrl = new URL(url);
conn =(HttpURLConnection) realUrl.openConnection();
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// POST方法
conn.setRequestMethod(method);
conn.setUseCaches(false);
conn.setConnectTimeout(10 * 1000);
if(header != null){
for (Map.Entry<String, String> entry : header.entrySet()) {
conn.setRequestProperty(entry.getKey(), entry.getValue());
}
}else{
conn.setRequestProperty("Content-Type", "application/json");
}
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), charset);
// 发送请求参数
if (params != null) {
StringBuilder param = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if(param.length()>0){
param.append("&");
}
param.append(entry.getKey());
param.append("=");
param.append(entry.getValue());
}
out.write(param.toString());
}
if(body != null){
out.write(body);
}
out.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
result = getInputPutStreamReader(conn.getInputStream(), charset);
}else{
return ResultVO.setFail(null, getInputPutStreamReader(conn.getErrorStream(), charset));
}
} catch (ProtocolException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (MalformedURLException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
}catch(Exception e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "出现未知异常");
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
if(conn != null){
conn.disconnect();
}
}
catch(IOException e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
}
}
return ResultVO.setSuccess(result, "");
}
/**
* https请求
* @param url
* @param method
* @param body
* @param params
* @param header
* @param charset
* @return
*/
public static ResultVO sendHttps(String url,String method,String body,Map<String, String> params,Map<String, String> header,String charset){
if(null == method || "".equals(method)){
method ="POST";
}
if(null == charset || "".equals(charset)){
charset = "UTF-8";
}
OutputStreamWriter out = null;
BufferedReader in = null;
HttpsURLConnection conn = null;
String result = null;
try {
URL realUrl = new URL(url);
conn =(HttpsURLConnection) realUrl.openConnection();
//支持https请求
conn.setSSLSocketFactory(createSSL());
conn.setDoOutput(true);
conn.setDoInput(true);
// POST方法
conn.setRequestMethod(method);
conn.setUseCaches(false);
conn.setConnectTimeout(10 * 1000);
if(header != null){
for (Map.Entry<String, String> entry : header.entrySet()) {
conn.setRequestProperty(entry.getKey(), entry.getValue());
}
}else{
conn.setRequestProperty("Content-Type", "application/json");
}
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), charset);
// 发送请求参数
if (params != null) {
StringBuilder param = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if(param.length()>0){
param.append("&");
}
param.append(entry.getKey());
param.append("=");
param.append(entry.getValue());
}
out.write(param.toString());
}
if(body != null){
out.write(body);
}
out.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
result = getInputPutStreamReader(conn.getInputStream(), charset);
}else{
return ResultVO.setFail(null, getInputPutStreamReader(conn.getErrorStream(), charset));
}
} catch (ProtocolException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (MalformedURLException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (KeyManagementException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "创建SSL失败");
} catch (NoSuchAlgorithmException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "创建SSL失败");
} catch(Exception e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "出现未知异常");
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
if(conn != null){
conn.disconnect();
}
}
catch(IOException e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
}
}
return ResultVO.setSuccess(result, "");
}
private static String getInputPutStreamReader(InputStream inputStream,String charset) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,charset));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
return sb.toString();
}
private static javax.net.ssl.SSLSocketFactory createSSL() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] tm = new TrustManager[]{myX509TrustManager};
//TLSv1.1以及以上的需要JDK1.7以上
SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
sslContext.init(null, tm, null);
javax.net.ssl.SSLSocketFactory ssf = sslContext.getSocketFactory();
return ssf;
}
private static TrustManager myX509TrustManager = new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
};
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cn.com.glxt.common.ResultVO;
import com.alibaba.fastjson.JSONObject;
public class HttpClientUtil {
private static final Log LOGGER = LogFactory.getFactory().getInstance(HttpClientUtil.class);
public static void main(String[] args) {
String url = "https://domain/services/oauth2/token";
String charset = "UTF-8";
Map<String,String> params = new HashMap<String,String>();
Map<String,String> header = new HashMap<String, String>();
header.put("Content-Type", "application/x-www-form-urlencoded");
ResultVO resultVO = sendHttps(url,null,null,params,header,charset);
if(resultVO.isSuccess()){
JSONObject json = JSONObject.parseObject(resultVO.getData().toString());
String data = "{\"key\":\"value\"}";
header.put("Content-Type", "application/json");
resultVO = sendHttps(json.getString("instance_url"), null,data,null, header, charset);
if(resultVO.isSuccess()){
System.out.println(resultVO.getData().toString());
}else{
System.out.println(resultVO.getMessage());
}
}else{
System.out.println(resultVO.getMessage());
}
}
/**
* http请求
* @param url
* @param method
* @param body
* @param params
* @param header
* @param charset
* @return
*/
public static ResultVO sendHttp(String url,String method,String body,Map<String, String> params,Map<String, String> header,String charset){
if(null == method || "".equals(method)){
method ="POST";
}
if(null == charset || "".equals(charset)){
charset = "UTF-8";
}
OutputStreamWriter out = null;
BufferedReader in = null;
HttpURLConnection conn = null;
String result = null;
try {
URL realUrl = new URL(url);
conn =(HttpURLConnection) realUrl.openConnection();
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// POST方法
conn.setRequestMethod(method);
conn.setUseCaches(false);
conn.setConnectTimeout(10 * 1000);
if(header != null){
for (Map.Entry<String, String> entry : header.entrySet()) {
conn.setRequestProperty(entry.getKey(), entry.getValue());
}
}else{
conn.setRequestProperty("Content-Type", "application/json");
}
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), charset);
// 发送请求参数
if (params != null) {
StringBuilder param = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if(param.length()>0){
param.append("&");
}
param.append(entry.getKey());
param.append("=");
param.append(entry.getValue());
}
out.write(param.toString());
}
if(body != null){
out.write(body);
}
out.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
result = getInputPutStreamReader(conn.getInputStream(), charset);
}else{
return ResultVO.setFail(null, getInputPutStreamReader(conn.getErrorStream(), charset));
}
} catch (ProtocolException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (MalformedURLException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
}catch(Exception e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "出现未知异常");
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
if(conn != null){
conn.disconnect();
}
}
catch(IOException e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
}
}
return ResultVO.setSuccess(result, "");
}
/**
* https请求
* @param url
* @param method
* @param body
* @param params
* @param header
* @param charset
* @return
*/
public static ResultVO sendHttps(String url,String method,String body,Map<String, String> params,Map<String, String> header,String charset){
if(null == method || "".equals(method)){
method ="POST";
}
if(null == charset || "".equals(charset)){
charset = "UTF-8";
}
OutputStreamWriter out = null;
BufferedReader in = null;
HttpsURLConnection conn = null;
String result = null;
try {
URL realUrl = new URL(url);
conn =(HttpsURLConnection) realUrl.openConnection();
//支持https请求
conn.setSSLSocketFactory(createSSL());
conn.setDoOutput(true);
conn.setDoInput(true);
// POST方法
conn.setRequestMethod(method);
conn.setUseCaches(false);
conn.setConnectTimeout(10 * 1000);
if(header != null){
for (Map.Entry<String, String> entry : header.entrySet()) {
conn.setRequestProperty(entry.getKey(), entry.getValue());
}
}else{
conn.setRequestProperty("Content-Type", "application/json");
}
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), charset);
// 发送请求参数
if (params != null) {
StringBuilder param = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if(param.length()>0){
param.append("&");
}
param.append(entry.getKey());
param.append("=");
param.append(entry.getValue());
}
out.write(param.toString());
}
if(body != null){
out.write(body);
}
out.flush();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
result = getInputPutStreamReader(conn.getInputStream(), charset);
}else{
return ResultVO.setFail(null, getInputPutStreamReader(conn.getErrorStream(), charset));
}
} catch (ProtocolException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (MalformedURLException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
} catch (KeyManagementException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "创建SSL失败");
} catch (NoSuchAlgorithmException e) {
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "创建SSL失败");
} catch(Exception e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "出现未知异常");
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
if(conn != null){
conn.disconnect();
}
}
catch(IOException e){
LOGGER.error(e.getMessage(), e);
return ResultVO.setFail(null, "网络异常");
}
}
return ResultVO.setSuccess(result, "");
}
private static String getInputPutStreamReader(InputStream inputStream,String charset) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,charset));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
return sb.toString();
}
private static javax.net.ssl.SSLSocketFactory createSSL() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] tm = new TrustManager[]{myX509TrustManager};
//TLSv1.1以及以上的需要JDK1.7以上
SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
sslContext.init(null, tm, null);
javax.net.ssl.SSLSocketFactory ssf = sslContext.getSocketFactory();
return ssf;
}
private static TrustManager myX509TrustManager = new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
};
}
阅读全文
0 0
- jdk 调用http https/请求
- http与https请求
- https http请求 demo
- http与https请求
- Android Https请求调用
- http/https接口调用
- ruby发送http,https请求
- httpclient支持https,http请求
- Http 和 Https 访问请求
- HTTPS请求与HTTP兼容
- 发起https和http请求
- JAVA发送http、https请求
- HttpClient 发送 HTTP、HTTPS 请求
- http,https请求的处理
- http https请求工具类
- android http 和https请求
- nginx http请求转https
- haproxy 中的http请求和https请求
- 树状数组学习
- md5($str,true)注入
- SSH框架之spring整合javamail实现邮件服务
- android studio 在gradle 中配置签名文件
- 20170917_关键字restrict的含义
- jdk 调用http https/请求
- 《Python语言及其应用》读书笔记(5)之第6章对象和类(关键词:对象/类)
- js 防止表单重复提交
- ssh框架spring 简单应用
- sts eclipse 反编译插件免安装 解压就可使用
- yy
- 头条一面
- 缺少 ippicv_2017u2_lnx_intel64_20170418.tgz的解决办法
- win10 使用monkeyrunner安装apk