import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import net.sf.json.JSONObject;
import com.baxcall.visitor.wechat.pojo.Token;
public class CommonUtil {
//private static Logger log = LoggerFactory.getLogger(CommonUtil.class);
//测试ID
/*
public final static String APP_ID = "测试appid";
public final static String APP_SECRET = "测试secret";
*/
//正式ID
public final static String APP_ID = "正式appid";
public final static String APP_SECRET = "正式secret";
//获取凭证地址
public final static String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
public static Token token;
//发送https请求
/**
*
* @param requestUrl 请求的地址
* @param requestMethod 请求的方式
* @param outputStr 提交的数据
* @return
*/
public static JSONObject httpRequest(String requestUrl,String requestMethod,String outputStr){
JSONObject jsonObject = null;
try{
//创建SSL对象
TrustManager[] tm = {new MyX509TrustManager()};
SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(requestUrl);
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(ssf);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod(requestMethod);
//当提交的数据不为null,向输入流写数据
if(null!=outputStr){
OutputStream outputStream = conn.getOutputStream();
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
//获取输入流
InputStream inputStream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//读取响应内容
StringBuffer buffer = new StringBuffer();
String str = null;
while((str=bufferedReader.readLine())!=null){
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
conn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
}catch(ConnectException e){
System.err.println("连接超时");
//log.error("连接超时");
}catch(Exception e1){
e1.printStackTrace();
System.err.println("请求异常");
//log.error("请求异常");
}
return jsonObject;
}
/**
* 获取Token
* @param appid
* @param appsecret
* @return Token
*/
public static Token getToken(String appid,String appsecret){
Token token = null;
String requestUrl = TOKEN_URL.replace("APPID", appid).replace("APPSECRET", appsecret);
JSONObject jsonObject = httpRequest(requestUrl, "GET", null);
if(null!=jsonObject){
try{
token = new Token();
token.setAccessToken(jsonObject.getString("access_token"));
token.setExpiresIn(jsonObject.getInt("expires_in"));
}catch(Exception e){
e.printStackTrace();
System.err.println("获取口令失败");
//log.error("获取口令失败");
}
}
return token;
}
}
微信请求工具类
最新推荐文章于 2023-04-27 17:48:40 发布