发表于: 2017-12-26 23:16:21

1 599


今天完成的事情

写了从微信拉取用户信息的demo

先写一个工具类,其中有发起http请求并得到结果的方法:

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
       StringBuffer buffer = new StringBuffer();
       try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
           TrustManager[] tm = { new MyX509TrustManager() };
           SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
           sslContext.init(null, tm, new java.security.SecureRandom());
           // 从上述SSLContext对象中得到SSLSocketFactory对象
           SSLSocketFactory ssf = sslContext.getSocketFactory();

           URL url = new URL(requestUrl);
           HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
           httpUrlConn.setSSLSocketFactory(ssf);

           httpUrlConn.setDoOutput(true);
           httpUrlConn.setDoInput(true);
           httpUrlConn.setUseCaches(false);

           // 设置请求方式(GET/POST
           httpUrlConn.setRequestMethod(requestMethod);

           if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();

           // 当有数据需要提交时
           if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
               // 注意编码格式,防止中文乱码
               outputStream.write(outputStr.getBytes("UTF-8"));
               outputStream.close();
           }

// 将返回的输入流转换成字符串
           InputStream inputStream = httpUrlConn.getInputStream();
           InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
           BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

           String str = null;
           while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
           }
bufferedReader.close();
           inputStreamReader.close();
           // 释放资源
           inputStream.close();
           inputStream = null;
           httpUrlConn.disconnect();
           jsonObject = JSONObject.parseObject(buffer.toString());

       } catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
       } catch (Exception e) {
log.error("https request error:{}", e);
       }
return jsonObject;
   }

将得从网络返回的json数据转换为json对象,重复利用这个方法,可以完成多次微信接口的调用

用户在微信中点击网页授权的链接后,微信会向自己的服务器发送参数,利用:

String cc = request.getQueryString();
String cc2 = cc.replace("code=","");
String code = cc2.replace("&state=STATE","");

可以获取到url中的参数code,然后写入自己的验证信息,调用微信的接口,获取access_token,openid,等

String url = uuu.replace("APPID",appId).replace("SECRET",appSecret).replace("CODE",code);
JSONObject jsonObject = WeixinUtil.httpRequest(url, "GET", null);

然后用获取的access_token来获取用户信息:

String O_url = O_url_1.replace("ACCESS_TOKEN",access_token).replace("OPENID",openid);
JSONObject data = WeixinUtil.httpRequest(O_url, "GET", null);

这样就能获得json格式的用户信息了



明天的计划

熟悉框架,写敲到的接口


遇到的问题


收获

用微信接口拉取信息


返回列表 返回列表
评论

    分享到