java公众平台通用接口工具类HttpConnectUtil实例代码
实例如下:
packagecom.common.util;
importjava.io.BufferedReader;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.net.ConnectException;
importjava.net.HttpURLConnection;
importjava.net.URL;
importjava.util.Date;
importjavax.net.ssl.HttpsURLConnection;
importjavax.net.ssl.SSLContext;
importjavax.net.ssl.SSLSocketFactory;
importjavax.net.ssl.TrustManager;
importjavax.servlet.http.HttpServletRequest;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importcom.common.weixin.access.util.MyX509TrustManager;
/**
*公众平台通用接口工具类
*
*@author
*@date2013-08-09
*/
publicclassHttpConnectUtil{
privatestaticLoggerlog=LoggerFactory.getLogger(HttpConnectUtil.class);
/**
*发起https请求并获取结果
*
*@paramrequestUrl请求地址
*@paramrequestMethod请求方式(GET、POST)
*@paramoutputStr提交的数据
*@returnJSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
*/
publicstaticStringhttpRequest(StringrequestUrl,StringrequestMethod,StringoutputStr){
Stringresult=null;
StringBufferbuffer=newStringBuffer();
try{
URLurl=newURL(requestUrl);
HttpURLConnectionhttpUrlConn=(HttpURLConnection)url.openConnection();
//设置通用的请求属性
httpUrlConn.setRequestProperty("accept","*/*");
httpUrlConn.setRequestProperty("connection","Keep-Alive");
httpUrlConn.setRequestProperty("Charset","utf-8");
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
//设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
//当有数据需要提交时
if(null!=outputStr){
OutputStreamoutputStream=httpUrlConn.getOutputStream();
//注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
//将返回的输入流转换成字符串
InputStreaminputStream=httpUrlConn.getInputStream();
InputStreamReaderinputStreamReader=newInputStreamReader(inputStream,"utf-8");
BufferedReaderbufferedReader=newBufferedReader(inputStreamReader);
Stringstr=null;
while((str=bufferedReader.readLine())!=null){
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
//释放资源
inputStream.close();
inputStream=null;
httpUrlConn.disconnect();
result=buffer.toString();
//jsonObject=JSONObject.fromObject(buffer.toString());
}catch(ConnectExceptionce){
log.error("Weixinserverconnectiontimedout.");
}catch(Exceptione){
log.error("httpsrequesterror:{}",e);
}
returnresult;
}
/**
*发起https请求并获取结果
*
*@paramrequestUrl请求地址
*@paramrequestMethod请求方式(GET、POST)
*@paramoutputStr提交的数据
*@return结果字符串
*/
publicstaticStringhttpsRequest(StringrequestUrl,StringrequestMethod,StringoutputStr)throwsException{
Stringresult=null;
StringBufferbuffer=newStringBuffer();
try{
//创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[]tm={newMyX509TrustManager()};
SSLContextsslContext=SSLContext.getInstance("SSL","SunJSSE");
sslContext.init(null,tm,newjava.security.SecureRandom());
//从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactoryssf=sslContext.getSocketFactory();
URLurl=newURL(requestUrl);
HttpsURLConnectionhttpUrlConn=(HttpsURLConnection)url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
//设置通用的请求属性
httpUrlConn.setRequestProperty("accept","*/*");
httpUrlConn.setRequestProperty("connection","Keep-Alive");
httpUrlConn.setRequestProperty("Charset","utf-8");
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
//设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
//当有数据需要提交时
if(null!=outputStr){
OutputStreamoutputStream=httpUrlConn.getOutputStream();
//注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
//将返回的输入流转换成字符串
InputStreaminputStream=httpUrlConn.getInputStream();
InputStreamReaderinputStreamReader=newInputStreamReader(inputStream,"utf-8");
BufferedReaderbufferedReader=newBufferedReader(inputStreamReader);
Stringstr=null;
while((str=bufferedReader.readLine())!=null){
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
//释放资源
inputStream.close();
inputStream=null;
httpUrlConn.disconnect();
result=buffer.toString();
//jsonObject=JSONObject.fromObject(buffer.toString());
}catch(ConnectExceptionce){
log.error(requestUrl+"serverconnectiontimedout.");
thrownewException("连接服务器超时");
}catch(Exceptione){
log.error(requestUrl+"httpsrequesterror:{}",e);
thrownewException("HTTPS请求错误");
}
returnresult;
}
publicstaticStringgetIpAddr(HttpServletRequestrequest){
Stringip=request.getHeader("x-forwarded-for");
if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){
ip=request.getHeader("Proxy-Client-IP");
}
if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){
ip=request.getHeader("WL-Proxy-Client-IP");
}
if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){
ip=request.getRemoteAddr();
}
returnip;
}
}
以上这篇java公众平台通用接口工具类HttpConnectUtil实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。