1. ·您当前的位置:主页 > 技术教程 > 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

      热门文章推荐

      请稍候...
      彩票软件开发公司