小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我找到的案例是 往https://wxplus.paoyeba.com/index.php/Api/Login/getsessionkey中发请求
我现在的回调函数返回的状态一直都是0,
那么我如果用java为后台的话,我该怎么配置,url该写成什么样的
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
package
cn.allmy.ceiling.controller;
import
java.io.BufferedReader;
java.io.InputStream;
java.io.InputStreamReader;
java.net.URL;
java.net.URLConnection;
java.util.List;
java.util.Map;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestParam;
org.springframework.web.bind.annotation.ResponseBody;
com.qcloud.Utilities.Json.JSONObject;
public
class
UserController {
@RequestMapping
(
"handle_userSeion"
)
//此处填自己要用到的项目名。
@ResponseBody
static
void
getOpenid(
@RequestParam
(value=
"code"
,required=
false
)String getcode) {
//接收用户传过来的code,required=false表明如果这个参数没有传过来也可以。
// String code=getcode;
//接收从客户端获取的code
//向微信后台发起请求获取openid的url
String WX_URL =
"https://api.weixin.qq.com/sns/jscode2session?appid=<span style=color:#ff0000;>APPID</span>&secret=<span style=color:#ff0000;>SECRET</span>&js_code=<span style=color:#ff0000;>JSCODE</span>&grant_type=authorization_code"
;
String requestUrl = WX_URL.replace(
"APPID"
,
"------------------"
).
//填写自己的appid
replace(
"SECRET"
"----------------------"
).replace(
"JSCODE"
, code).
//填写自己的appsecret,
"authorization_code"
);
//调用get方法发起get请求,并把返回值赋值给returnvalue
String returnvalue=GET(requestUrl);
System.out.println(requestUrl);
//打印发起请求的url
System.out.println(returnvalue);
//打印调用GET方法返回值
//定义一个json对象。
JSONObject convertvalue=
new
JSONObject();
//将得到的字符串转换为json
convertvalue=(JSONObject) JSON.parse(returnvalue);
System.out.println(
"return openid is :"
+(String)convertvalue.get(
"openid"
));
//打印得到的openid
"return sessionkey is :"
"session_key"
//打印得到的sessionkey,
//把openid和sessionkey分别赋值给openid和sessionkey
String openid=(String) convertvalue.get(
String sessionkey=(String) convertvalue.get(
//定义两个变量存储得到的openid和session_key.
}
String GET(String url) {
String result =
""
BufferedReader in =
null
InputStream is =
InputStreamReader isr =
try
{
URL realUrl =
URL(url);
URLConnection conn = realUrl.openConnection();
conn.connect();
Map<String, List<String>> map = conn.getHeaderFields();
is = conn.getInputStream();
isr =
InputStreamReader(is);
in =
BufferedReader(isr);
String line;
while
((line = in.readLine()) !=
) {
result += line;
catch
(Exception e) {
// 异常记录
finally
if
(in !=
in.close();
(is !=
is.close();
(isr !=
isr.close();
(Exception e2) {
return
result;
/*此方法没有用到。就先放在这吧
public static String jedisOperate(String Session_key, String openid) {
//这里需要引入一下jedis的dependenicy
Jedis jedis = new Jedis("localhost");
String openid = openid;
String session_key = session_key;
String uid = UUID.randomUUID().toString();
StringBuffer sb = new StringBuffer();
sb.append(openid);
sb.append(","+session_key);
jedis.set(uid, sb.toString());
return uid;
//如果需要获取登录用户的用户名和昵称,我们就需要注意一个问题,如果昵称中有中文就会出现乱码,这是因为微信对于中文是按照ISO-8859-1来进行编码的而我们需要的utf8编码,对于获取用户昵称出现乱码这个问题我们做一下简单的处理就可以解决:
//String nickNameDecode = new String(nickName.getBytes("ISO-8859-1"),"utf-8");
} */
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
packagecn.allmy.ceiling.controller;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.URL;importjava.net.URLConnection;importjava.util.List;importjava.util.Map;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importcom.qcloud.Utilities.Json.JSONObject;publicclassUserController {@RequestMapping("handle_userSeion")//此处填自己要用到的项目名。@ResponseBodypublicstaticvoidgetOpenid(@RequestParam(value="code",required=false)String getcode) {//接收用户传过来的code,required=false表明如果这个参数没有传过来也可以。// String code=getcode;//接收从客户端获取的code//向微信后台发起请求获取openid的urlString WX_URL ="https://api.weixin.qq.com/sns/jscode2session?appid=<span style=color:#ff0000;>APPID</span>&secret=<span style=color:#ff0000;>SECRET</span>&js_code=<span style=color:#ff0000;>JSCODE</span>&grant_type=authorization_code";String requestUrl = WX_URL.replace("APPID","------------------").//填写自己的appidreplace("SECRET","----------------------").replace("JSCODE", code).//填写自己的appsecret,replace("authorization_code","authorization_code");//调用get方法发起get请求,并把返回值赋值给returnvalueString returnvalue=GET(requestUrl);System.out.println(requestUrl);//打印发起请求的urlSystem.out.println(returnvalue);//打印调用GET方法返回值//定义一个json对象。JSONObject convertvalue=newJSONObject();//将得到的字符串转换为jsonconvertvalue=(JSONObject) JSON.parse(returnvalue);System.out.println("return openid is :"+(String)convertvalue.get("openid"));//打印得到的openidSystem.out.println("return sessionkey is :"+(String)convertvalue.get("session_key"));//打印得到的sessionkey,//把openid和sessionkey分别赋值给openid和sessionkeyString openid=(String) convertvalue.get("openid");String sessionkey=(String) convertvalue.get("session_key");//定义两个变量存储得到的openid和session_key.}publicstaticString GET(String url) {String result ="";BufferedReader in =null;InputStream is =null;InputStreamReader isr =null;try{URL realUrl =newURL(url);URLConnection conn = realUrl.openConnection();conn.connect();Map<String, List<String>> map = conn.getHeaderFields();is = conn.getInputStream();isr =newInputStreamReader(is);in =newBufferedReader(isr);String line;while((line = in.readLine()) !=null) {result += line;}}catch(Exception e) {// 异常记录}finally{try{if(in !=null) {in.close();}if(is !=null) {is.close();}if(isr !=null) {isr.close();}}catch(Exception e2) {// 异常记录}}returnresult;}/*此方法没有用到。就先放在这吧public static String jedisOperate(String Session_key, String openid) {//这里需要引入一下jedis的dependenicyJedis jedis = new Jedis("localhost");String openid = openid;String session_key = session_key;String uid = UUID.randomUUID().toString();StringBuffer sb = new StringBuffer();sb.append(openid);sb.append(","+session_key);jedis.set(uid, sb.toString());return uid;//如果需要获取登录用户的用户名和昵称,我们就需要注意一个问题,如果昵称中有中文就会出现乱码,这是因为微信对于中文是按照ISO-8859-1来进行编码的而我们需要的utf8编码,对于获取用户昵称出现乱码这个问题我们做一下简单的处理就可以解决://String nickNameDecode = new String(nickName.getBytes("ISO-8859-1"),"utf-8");} */}