java接收小程序的参数,微信小程序java后台获取openid

  • Post author:
  • Post category:java


先看官方的流程图

af38bc172989b1ec9c3b64d6c3d1bade.png

分为小程序,开发者服务器(java端),微信接口服务(获取openid的接口)

小程序端:

var that = this

wx.login({

success: function (res) {

var code = res.code;//发送给服务器的code

if (code) {

wx.request({

url: that.globalData.ip+’/GetOpenId’,//自己的java后台地址

data: {

code: code

},

header: {

‘content-type’: ‘application/json’

},

success: function (res) {

console.log(res);

console.log(“获取openid”,res)

}

})

}

else {

console.log(“获取用户登录态失败!”);

}

},

fail: function (error) {

console.log(‘login failed ‘ + error);

}

})

java端:

这里分为两个部分 :1,一个工具类(GetOpenIdUtil.java):将获取到的code 和 session以及appid 按要求结合在一起并查询openid

2,实际处理类(GetOpenId):接受数据,进行处理,返回小程序数据。

工具类(GetOpenIdUtil.java)

package com.util;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

/**

*

*/

public class GetOpenIdUtil {

public String getopenid(String appid,String code,String secret) {

BufferedReader in = null;

//appid和secret是开发者分别是小程序ID和小程序密钥,开发者通过微信公众平台-》设置-》开发设置就可以直接获取,

String url=”https://api.weixin.qq.com/sns/jscode2session?appid=”

+appid+”&secret=”+secret+”&js_code=”+code+”&grant_type=authorization_code”;

try {

URL weChatUrl = new URL(url);

// 打开和URL之间的连接

URLConnection connection = weChatUrl.openConnection();

// 设置通用的请求属性

connection.setConnectTimeout(5000);

connection.setReadTimeout(5000);

// 建立实际的连接

connection.connect();

// 定义 BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

StringBuffer sb = new StringBuffer();

String line;

while ((line = in.readLine()) != null) {

sb.append(line);

}

return sb.toString();

} catch (Exception e1) {

throw new RuntimeException(e1);

}

// 使用finally块来关闭输入流

finally {

try {

if (in != null) {

in.close();

}

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

}

实际处理类(GetOpenId)

采用Servlet(java web 技术)和 小程序通信 (不知道可以学习下再用)

/**

* Servlet implementation class GetOpenId

*/

@WebServlet(“/GetOpenId”)

public class GetOpenId extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public GetOpenId() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//response.getWriter().append(“Served at: “).append(request.getContextPath());

doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub GetOpenId

response.setContentType(“text/html;charset=utf-8”);

/*设置响应头允许ajax跨域访问*/

response.setHeader(“Access-Control-Allow-Origin”, “*”);

/* 星号表示所有的异域请求都可以接受, */

response.setHeader(“Access-Control-Allow-Methods”, “GET,POST”);

//获取微信小程序get的参数值并打印

String code = request.getParameter(“code”);

//参数

String appid = “”;//自己找自己的

// 记得发给别人前删掉这个

String secret = “”;//自己找自己的

// 调用方位微信服务器工具方法

GetOpenIdUtil getopenid=new GetOpenIdUtil();

//调用访问微信服务器工具方法,传入三个参数获取带有openid、session_key的json字符串

String jsonId=getopenid.getopenid(appid,code,secret);

JSONObject jsonObject = JSONObject.fromObject(jsonId);

//从json字符串获取openid和session_key

String openid=jsonObject.getString(“openid”);

String session_key=jsonObject.getString(“session_key”);

System.out.println(“openid”+openid);

//返回值给微信小程序

response.setCharacterEncoding(“UTF-8”);

Writer out = response.getWriter();

//out.write(“进入后台了”+json);

out.write(jsonObject.toString());

out.flush();

}

}

就OK了,有什么不了解的地方请留言 我看到了会第一时间回复。