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实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。