package com.baimi.routerweb.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baimi.routerweb.common.Constant;
import com.baimi.routerweb.entity.AccessToken;
public class HttpUtil {
private static Logger log = LoggerFactory.getLogger(HttpUtil.class);
/**
* 发起https请求并获取结果
*
* @param requestUrl
* 请求地址
* @param requestMethod
* 请求方式(GET、POST)
* @param outputStr
* 提交的数据
* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
*/
public static JSONObject httpRequest(String requestUrl,
String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(requestUrl);
System.setProperty("java.protocol.handler.pkgs", "javax.net.ssl");
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
return urlHostName.equals(session.getPeerHost());
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url
.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("https request error:{}", e);
}
return jsonObject;
}
/**
* 发起http请求并获取结果
*
* @param requestUrl
* 请求地址
* @param requestMethod
* 请求方式(GET、POST)
* @param outputStr
* 提交的数据
* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
*/
public static JSONObject httpNormalRequest(String requestUrl,
String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(requestUrl);
HttpURLConnection httpUrlConn = (HttpURLConnection) url
.openConnection();
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("http request error:{}", e);
}
return jsonObject;
}
/**
* 获取access_token
*
* @param appid
* 凭证
* @param appsecret
* 密钥
* @return
*/
public static AccessToken getAccessToken() {
AccessToken accessToken = null;
String requestUrl = Constant.URL_ACCESS_TOKEN;
JSONObject jsonObject = httpRequest(requestUrl, "GET", null);
// 如果请求成功
if (null != jsonObject) {
try {
accessToken = new AccessToken();
accessToken.setToken(jsonObject.getString("access_token"));
accessToken.setExpiresIn(jsonObject.getInt("expires_in"));
} catch (JSONException e) {
accessToken = null;
// 获取token失败
log.error("获取token失败 errcode:{} errmsg:{}",
jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
}
return accessToken;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SSM多数据源项目.rar (89个子文件)
RouterWeb
.project 2KB
.mymetadata 300B
src
beans.xml 4KB
com
baimi
routerweb
common
Constant.java 541B
ErrorHandle.java 753B
service
impl
UserServiceImpl.java 696B
UserService.java 161B
controller
MainController.java 2KB
mapper
UserMapper.java 159B
User.xml 1KB
util
HttpUtil.java 6KB
MyX509TrustManager.java 769B
entity
User.java 2KB
AccessToken.java 540B
datasource
DataSourceType.java 496B
DynamicDataSource.java 505B
DataSourceContextHolder.java 560B
mybatis-config.xml 410B
log4j.properties 429B
WebRoot
WEB-INF
springmvc-servlet.xml 1009B
classes
beans.xml 4KB
com
baimi
routerweb
common
Constant.class 660B
ErrorHandle.class 1KB
service
UserService.class 205B
impl
UserServiceImpl.class 950B
controller
MainController.class 3KB
mapper
UserMapper.class 202B
User.xml 1KB
util
HttpUtil.class 6KB
HttpUtil$1.class 907B
MyX509TrustManager.class 898B
entity
User.class 3KB
AccessToken.class 779B
datasource
DynamicDataSource.class 782B
DataSourceContextHolder.class 1002B
DataSourceType.class 501B
mybatis-config.xml 410B
log4j.properties 429B
lib
org.springframework.beans-3.0.5.RELEASE.jar 542KB
commons-collections-3.2.jar 558KB
log4j-1.2.16.jar 470KB
mysql-connector-java-5.1.20-bin.jar 784KB
org.springframework.expression-3.0.5.RELEASE.jar 166KB
ezmorph-1.0.4.jar 84KB
aspectj-1.6.12.jar 12.3MB
commons-lang-2.4.jar 256KB
org.springframework.context.support-3.0.5.RELEASE.jar 99KB
json-lib-2.2.2-jdk15.jar 141KB
org.springframework.aspects-3.0.5.RELEASE.jar 35KB
jstl-1.2.jar 405KB
org.springframework.web.struts-3.0.5.RELEASE.jar 31KB
slf4j-log4j12-1.6.1.jar 10KB
commons-dbcp-1.4.jar 157KB
org.springframework.asm-3.0.5.RELEASE.jar 52KB
commons-logging-1.1.1.jar 59KB
org.springframework.transaction-3.0.5.RELEASE.jar 226KB
commons-beanutils-1.7.0.jar 184KB
org.springframework.aop-3.0.5.RELEASE.jar 314KB
mybatis-spring-1.1.1.jar 40KB
org.springframework.instrument.tomcat-3.0.5.RELEASE.jar 6KB
org.springframework.test-3.0.5.RELEASE.jar 200KB
mybatis-3.2.6.jar 696KB
org.springframework.instrument-3.0.5.RELEASE.jar 2KB
org.springframework.oxm-3.0.5.RELEASE.jar 60KB
org.springframework.web.portlet-3.0.5.RELEASE.jar 171KB
slf4j-api-1.6.1.jar 25KB
org.springframework.web.servlet-3.0.5.RELEASE.jar 409KB
org.springframework.orm-3.0.5.RELEASE.jar 326KB
org.springframework.web-3.0.5.RELEASE.jar 386KB
cglib-nodep-2.2.3.jar 315KB
aopalliance-1.0.jar 4KB
org.springframework.jms-3.0.5.RELEASE.jar 181KB
org.springframework.context-3.0.5.RELEASE.jar 653KB
org.springframework.core-3.0.5.RELEASE.jar 373KB
commons-pool-1.6.jar 109KB
org.springframework.jdbc-3.0.5.RELEASE.jar 377KB
aspectjweaver-1.6.2.jar 1.47MB
web.xml 1KB
index.jsp 834B
META-INF
MANIFEST.MF 36B
.myeclipse
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 252B
com.genuitec.eclipse.ws.prefs 109B
org.eclipse.jdt.core.prefs 395B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.core.resources.prefs 88B
org.eclipse.wst.common.component 465B
.jsdtscope 500B
.classpath 770B
共 89 条
- 1
资源评论
- 爱编程的懒洋洋2017-07-18不同数据库类型不支持,只能支持单种。还有如果数据源能够通过动态增减更好。
- 空指针_2017-04-06很好,很赞,很强大
- ttyyttyyty2017-07-03感谢,正好需要这方面的资源
- panlei1992422018-01-23可以正常使用
疯狂的食堂老大妈
- 粉丝: 5
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Unity WebGL(IIS)配置pdf文档
- 三菱PLC例程源码电机高低速变换
- 【matlab / python / tkinter / BasicSR】基于EDVR SRCNN FSRCNN 的超分辨率部署
- 3400-CMN3400-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 336P-VB一款SOT23封装P-Channel场效应MOS管
- untitled0 - 副本.py
- 基于python+opencv开发的图片批量去黑边+裁剪+压缩工具源码+开发文档+实用教程(期末大作业&课设&项目开发)
- 三菱PLC例程源码电镀线程序
- 从PDF文件中读取表格内容并写入到EXCEL文档的pyton小程序
- 3365-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功