package com.xzx.gc.util.pay.util;
|
|
import javax.servlet.ServletException;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.*;
|
import java.net.*;
|
import java.util.Iterator;
|
import java.util.Map;
|
|
|
public class HttpRequestor {
|
public static String charset = "utf-8";
|
public static Integer connectTimeout = null;
|
public static Integer socketTimeout = null;
|
public static String proxyHost = null;
|
public static Integer proxyPort = null;
|
|
/**
|
* Do GET request
|
* @param url
|
* @return
|
* @throws Exception
|
* @throws IOException
|
*/
|
public static String doGet(String url) throws Exception {
|
|
URL localURL = new URL(url);
|
|
URLConnection connection = openConnection(localURL);
|
HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
|
|
httpURLConnection.setRequestProperty("Accept-Charset", charset);
|
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
|
InputStream inputStream = null;
|
InputStreamReader inputStreamReader = null;
|
BufferedReader reader = null;
|
StringBuffer resultBuffer = new StringBuffer();
|
String tempLine = null;
|
|
if (httpURLConnection.getResponseCode() >= 300) {
|
throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
|
}
|
|
try {
|
inputStream = httpURLConnection.getInputStream();
|
inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
|
reader = new BufferedReader(inputStreamReader);
|
|
while ((tempLine = reader.readLine()) != null) {
|
resultBuffer.append(tempLine);
|
}
|
|
} finally {
|
|
if (reader != null) {
|
reader.close();
|
}
|
|
if (inputStreamReader != null) {
|
inputStreamReader.close();
|
}
|
|
if (inputStream != null) {
|
inputStream.close();
|
}
|
|
}
|
|
return resultBuffer.toString();
|
}
|
|
/**
|
* Do POST request
|
* @param url
|
* @param parameterMap
|
* @return
|
* @throws Exception
|
*/
|
public String doPost(String url, Map parameterMap) throws Exception {
|
|
/* Translate parameter map to parameter date string */
|
StringBuffer parameterBuffer = new StringBuffer();
|
if (parameterMap != null) {
|
Iterator iterator = parameterMap.keySet().iterator();
|
String key = null;
|
String value = null;
|
while (iterator.hasNext()) {
|
key = (String)iterator.next();
|
if (parameterMap.get(key) != null) {
|
value = (String)parameterMap.get(key);
|
} else {
|
value = "";
|
}
|
|
parameterBuffer.append(key).append("=").append(value);
|
if (iterator.hasNext()) {
|
parameterBuffer.append("&");
|
}
|
}
|
}
|
|
System.out.println("POST parameter : " + parameterBuffer.toString());
|
|
URL localURL = new URL(url);
|
|
URLConnection connection = openConnection(localURL);
|
HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
|
|
httpURLConnection.setDoOutput(true);
|
httpURLConnection.setRequestMethod("POST");
|
httpURLConnection.setRequestProperty("Accept-Charset", charset);
|
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));
|
|
OutputStream outputStream = null;
|
OutputStreamWriter outputStreamWriter = null;
|
InputStream inputStream = null;
|
InputStreamReader inputStreamReader = null;
|
BufferedReader reader = null;
|
StringBuffer resultBuffer = new StringBuffer();
|
String tempLine = null;
|
|
try {
|
outputStream = httpURLConnection.getOutputStream();
|
outputStreamWriter = new OutputStreamWriter(outputStream);
|
|
outputStreamWriter.write(parameterBuffer.toString());
|
outputStreamWriter.flush();
|
|
if (httpURLConnection.getResponseCode() >= 300) {
|
throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
|
}
|
|
inputStream = httpURLConnection.getInputStream();
|
inputStreamReader = new InputStreamReader(inputStream);
|
reader = new BufferedReader(inputStreamReader);
|
|
while ((tempLine = reader.readLine()) != null) {
|
resultBuffer.append(tempLine);
|
}
|
|
} finally {
|
|
if (outputStreamWriter != null) {
|
outputStreamWriter.close();
|
}
|
|
if (outputStream != null) {
|
outputStream.close();
|
}
|
|
if (reader != null) {
|
reader.close();
|
}
|
|
if (inputStreamReader != null) {
|
inputStreamReader.close();
|
}
|
|
if (inputStream != null) {
|
inputStream.close();
|
}
|
|
}
|
|
return resultBuffer.toString();
|
}
|
|
public static URLConnection openConnection(URL localURL) throws IOException {
|
URLConnection connection;
|
if (proxyHost != null && proxyPort != null) {
|
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
|
connection = localURL.openConnection(proxy);
|
} else {
|
connection = localURL.openConnection();
|
}
|
return connection;
|
}
|
|
/**
|
* Render request according setting
|
* @param connection
|
*/
|
private void renderRequest(URLConnection connection) {
|
|
if (connectTimeout != null) {
|
connection.setConnectTimeout(connectTimeout);
|
}
|
|
if (socketTimeout != null) {
|
connection.setReadTimeout(socketTimeout);
|
}
|
|
}
|
|
/*
|
* Getter & Setter
|
*/
|
public Integer getConnectTimeout() {
|
return connectTimeout;
|
}
|
|
public void setConnectTimeout(Integer connectTimeout) {
|
this.connectTimeout = connectTimeout;
|
}
|
|
public Integer getSocketTimeout() {
|
return socketTimeout;
|
}
|
|
public void setSocketTimeout(Integer socketTimeout) {
|
this.socketTimeout = socketTimeout;
|
}
|
|
public String getProxyHost() {
|
return proxyHost;
|
}
|
|
public void setProxyHost(String proxyHost) {
|
this.proxyHost = proxyHost;
|
}
|
|
public Integer getProxyPort() {
|
return proxyPort;
|
}
|
|
public void setProxyPort(Integer proxyPort) {
|
this.proxyPort = proxyPort;
|
}
|
|
public String getCharset() {
|
return charset;
|
}
|
|
public void setCharset(String charset) {
|
this.charset = charset;
|
}
|
|
|
public static void main(String[] args) {
|
String code="";
|
String appid = "wx6d7dfd9073dfa875";
|
String secret = "4d3aea976157935e563f8ef01c7a4293";
|
String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";
|
try {
|
String openid = new HttpRequestor().doGet(requestUrl);
|
System.out.println(openid);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
}
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
/* String code = request.getParameter("code");
|
String appid = "wx4b4009c4fce00e0c";
|
String secret = "4d3aea976157935e563f8ef01c7a4293";
|
String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+wxCode+"&grant_type=authorization_code";
|
*/ //第一次请求 获取access_token 和 openid
|
/* String oppid = new HttpRequestor().doGet(requestUrl);
|
JSONObject oppidObj =JSONObject.fromObject(oppid);
|
String access_token = (String) oppidObj.get("access_token");
|
String openid = (String) oppidObj.get("openid");
|
String requestUrl2 = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openid+"&lang=zh_CN";
|
String userInfoStr = new HttpRequestor().doGet(requestUrl2);
|
JSONObject wxUserInfo =JSONObject.fromObject(userInfoStr);*/
|
}
|
}
|