我部署在腾讯云服务器上的小程序 后台代码访问微信小程序的https接口通过code获取session_key和openid一直获取不成功 我把项目部署在本机或

极厌~คิดถึง 2018-05-27 03:22:26
我部署在腾讯云服务器上的小程序 后台代码访问微信小程序的https接口通过code获取session_key和openid一直获取不成功 我把项目部署在本机或者是新浪sae上都是可以获取到的

/**
* 处理https GET/POST请求
*
* @param requestUrl
* 请求地址
* @param requestMethod
* 请求方法(GET/POST)
* @param outputStr
* 参数 或者说请求体
* @return
* @throws Exception
* @throws NoSuchAlgorithmException
*/
public static String httpsRequest(String requestUrl, String requestMethod,
String outputStr) {
StringBuffer buffer = null;
try {
// 创建SSLContext
SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE");
TrustManager[] tm = { new MyX509TrustManager() };
// 初始化
sslContext.init(null, tm, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
// 获取SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();

URL url = new URL(requestUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setHostnameVerifier(DO_NOT_VERIFY);
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Content-Type", "text/plain;charset=utf-8");
conn.setRequestMethod(requestMethod);
// 设置当前实例使用的SSLSocketFactory
conn.setSSLSocketFactory(ssf);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();

// 往服务器上写内容
if (null != outputStr) {
OutputStream out = conn.getOutputStream();
out.write(outputStr.getBytes("utf-8"));
out.close();
}

// 读取服务器端返回的内容
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
buffer = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
buffer.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
if(buffer.toString()==null){
return "获取sessionkey失败";
}
return buffer.toString();
}
/**
* 微信小程序获取session_key和openid的请求地址
*/
public final static String code_url = "[图片]https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code";
/**
* 微信小程序获取session_key
* @param appid
* @param secret
* @param jscode
* @return
*/
public static String getSessionKey(String appid,String secret,String jscode){
String requestUrl = code_url.replace("APPID", appid).replace("SECRET", secret).replace("JSCODE", jscode);
String json = CommonUtil.httpsRequest(requestUrl, "GET", null);
JSONObject js = JSONObject.fromObject(json);
return js.toString();
}

...全文
1728 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyq027 2019-12-10
  • 打赏
  • 举报
回复
后面怎么处理了,我也遇到这问题
  • 打赏
  • 举报
回复
网络通畅,域名解析没有问题
maradona1984 2018-05-28
  • 打赏
  • 举报
回复
先检查网络是否通的,域名解析什么的

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧