·您当前的位置:主页 > 技术教程 > RED5教程 >

[微信]微信小程序与Java的Servlet通信示例

时间:2018-12-25 09:32zuidaima.com
如果有服务器的小伙伴设置为你服务器的请求地址(ip地址是不可以的,需要域名地址),本地测试的小伙伴需要内网穿透,博主用的花生壳穿透的

准备工具:微信开发者工具。
注1:“http://localhost:8080/ZYJ_WXTest/WXServlet”?#20445;?#24494;信小程序开发工具会报错。如果有服务器的小伙伴设置为你服务器的请求地址(ip地址是不可以的,需要域名地址),本地测试的小伙伴需要内网穿透,博主用的花生壳穿透的,6块钱申请,会免费送你一个域名。

前台编译

  1. onLoad: function () { 
  2.     var that = this
  3.     // // 登录 
  4.     wx.login({ 
  5.         success: res => { 
  6.             // 发送 res.code 到后台换取 openId, sessionKey, unionId 
  7.             if (res.code) { 
  8.                 //发起网络请求 
  9.                 wx.request({ 
  10.                     url: 'http://******/WXServlet',   (注1) 
  11.                     data: { 
  12.                         code: res.code 
  13.                     }, 
  14.                     success: res => { 
  15.                         app.globalData.openid = res.data.openid; 
  16.                         console.log(res) 
  17.                     } 
  18.                 }) 
  19.             } else { 
  20.                 console.log('登录失败!' + res.errMsg) 
  21.             } 
  22.         } 
  23.     }) 
  24.  

后台代码:

  1. @WebServlet("/WXServlet") 
  2. public class WXServlet extends HttpServlet{ 
  3.     /** 
  4.      *  
  5.      */ 
  6.     private static final long serialVersionUID = 1L
  7.  
  8.     /*申请小程序给的APPID 和 APPSECRET* 
  9.     private static final String APPID = "wxcc*****1ed7";   
  10.     private static final String SECRET = "c7c64*******c1617294f";  
  11.      
  12.      
  13.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
  14.         //设置请求编码 
  15.         request.setCharacterEncoding("utf-8"); 
  16.         response.setContentType("text/html;charset=utf-8"); 
  17.         /* 设置响应头允许ajax跨域访问 */ 
  18.         response.setHeader("Access-Control-Allow-Origin", "*"); 
  19.         /* 星号表示所有的异域请求都可以接受, */ 
  20.         response.setHeader("Access-Control-Allow-Methods", "GET,POST"); 
  21.  
  22.        //获取code 
  23.         String code =request.getParameter("code")); 
  24.         System.out.println("code="+code); 
  25.         String url = "https://api.weixin.qq.com/sns/jscode2session?appid="+APPID+ 
  26.                 "&secret="+SECRET+"&js_code="+ code +"&grant_type=authorization_code"; 
  27.         RestTemplate restTemplate = new RestTemplate(); 
  28.         //进行网络请求,访问url接口 
  29.         ResponseEntity<String>  responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class);   
  30.         //根据返回?#21040;?#34892;后续操作  
  31.         if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK)   
  32.            { 
  33.                String sessionData = responseEntity.getBody(); 
  34.                Gson gson = new Gson(); 
  35.                //解析从微信服务器获得的openid和session_key; 
  36.                JSONObject jsonResult = JSONObject.parseObject(sessionData.toString()); 
  37.  
  38.              //这样就取到 openId和 session_key了//获取用户的唯一标识 
  39.  
  40.               String openId=jsonResult.getString("openid"); 
  41.                String  key = jsonResult.getString("session_key"); 
  42.  
  43.                System.out.println(jsonResult); 
  44.                //下面就可以写自己的业务代码了 
  45.                //最后要返回一个自定义的登录状态,用来做后续数据传输的验证 
  46.  
  47.          } 
  48.  
  49.     } 
  50.  
  51.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
  52.         doGet(request, response); 
  53.     } 

http://www.zuidaima.com/blog/4162174240918528.htm

热门文章推荐

请稍候...
北京快乐八开奖结果
浙江风釆大乐透走势图 竞彩足球混合过关计算器百度 北京快3和值跨度图 今晚31选7开奖结果查询 com三肖中特期期准大公开 广东快乐十分任选四 体彩排列3字谜解析 广西快3害死人 体育彩票贵州11选5今天开 江西快3三同号单选 巴尔末公式规律 北京pk10冠军算法 中国福利彩票官方app官网 四肖中特期期准l 陕西泳坛夺金走势图