public class WechatUtil {
public final static Logger log = LoggerFactory.getLogger(WechatUtil.class);
public static final String WechatUniformMessagePostUrl = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=";
public static final String WechatAccessTokenPostUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
public static final String WechatGetOpenIdPostUrl = "https://api.weixin.qq.com/sns/jscode2session?grant_type=authorization_code";
public static String getWechatAccessToken(String appId,String appSecret){
if(!StringUtils.isBlank(appId)&&!StringUtils.isBlank(appSecret)){
NameValuePair[] arr = new NameValuePair[]{new NameValuePair("appid",appId),new NameValuePair("secret",appSecret)};
try {
String result = HttpUtil.post(WechatAccessTokenPostUrl, arr);
log.debug("请求微信接口获取access_token的回显:[{}]",result);
if(!StringUtils.isBlank(result) && result.contains(SystemConstant.WECHAT_RESPONSE_ACCESS_TOKEN_EXPIRES_IN)){//7200
JSONObject jo = JSON.parseObject(result);
String successCode = jo.getString(SystemConstant.WECHAT_RESPONSE_ACCESS_TOKEN_EXPIRES_IN);
if(SystemConstant.WECHAT_RESPONSE_ACCESS_TOKEN_SUCCESS.equals(successCode)){
//success
String access_token = jo.getString(SystemConstant.WECHAT_RESPONSE_ACCESS_TOKEN);
log.debug("获取access_token:[{}]",access_token);
return access_token;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) {
try {
URL url = new URL(requestUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求方式(GET/POST)
conn.setRequestMethod(requestMethod);
conn.setRequestProperty("content-type", "application/json");
// 当outputStr不为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);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
// 释放资源
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
inputStream = null;
conn.disconnect();
return buffer.toString();
} catch (ConnectException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}