zoukankan      html  css  js  c++  java
  • java 获取微信 页面授权 获取用户openid

    先调用微信的地址 跳转https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4b4009c4fce00e0c&redirect_uri=这里填写你要跳到请求页面授权域名l&response_type=code&scope=snsapi_base&state=123#wechat_redirect

    返回redirect_uri/?code=""&status="";

    拿到code就可获取openid以及用户信息

    先上 工具类

      1 package com.yulv.utils;
      2 
      3 import java.io.BufferedReader;
      4 import java.io.IOException;
      5 import java.io.InputStream;
      6 import java.io.InputStreamReader;
      7 import java.io.OutputStream;
      8 import java.io.OutputStreamWriter;
      9 import java.net.HttpURLConnection;
     10 import java.net.InetSocketAddress;
     11 import java.net.Proxy;
     12 import java.net.URL;
     13 import java.net.URLConnection;
     14 import java.util.Iterator;
     15 import java.util.Map;
     16 
     17 
     18 public class HttpRequestor {
     19      private String charset = "utf-8";
     20         private Integer connectTimeout = null;
     21         private Integer socketTimeout = null;
     22         private String proxyHost = null;
     23         private Integer proxyPort = null;
     24         
     25         /**
     26          * Do GET request
     27          * @param url
     28          * @return
     29          * @throws Exception
     30          * @throws IOException
     31          */
     32         public String doGet(String url) throws Exception {
     33             
     34             URL localURL = new URL(url);
     35             
     36             URLConnection connection = openConnection(localURL);
     37             HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
     38             
     39             httpURLConnection.setRequestProperty("Accept-Charset", charset);
     40             httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
     41             
     42             InputStream inputStream = null;
     43             InputStreamReader inputStreamReader = null;
     44             BufferedReader reader = null;
     45             StringBuffer resultBuffer = new StringBuffer();
     46             String tempLine = null;
     47             
     48             if (httpURLConnection.getResponseCode() >= 300) {
     49                 throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
     50             }
     51             
     52             try {
     53                 inputStream = httpURLConnection.getInputStream();
     54                 inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
     55                 reader = new BufferedReader(inputStreamReader);
     56                 
     57                 while ((tempLine = reader.readLine()) != null) {
     58                     resultBuffer.append(tempLine);
     59                 }
     60                 
     61             } finally {
     62                 
     63                 if (reader != null) {
     64                     reader.close();
     65                 }
     66                 
     67                 if (inputStreamReader != null) {
     68                     inputStreamReader.close();
     69                 }
     70                 
     71                 if (inputStream != null) {
     72                     inputStream.close();
     73                 }
     74                 
     75             }
     76 
     77             return resultBuffer.toString();
     78         }
     79         
     80         /**
     81          * Do POST request
     82          * @param url
     83          * @param parameterMap
     84          * @return
     85          * @throws Exception 
     86          */
     87         public String doPost(String url, Map parameterMap) throws Exception {
     88             
     89             /* Translate parameter map to parameter date string */
     90             StringBuffer parameterBuffer = new StringBuffer();
     91             if (parameterMap != null) {
     92                 Iterator iterator = parameterMap.keySet().iterator();
     93                 String key = null;
     94                 String value = null;
     95                 while (iterator.hasNext()) {
     96                     key = (String)iterator.next();
     97                     if (parameterMap.get(key) != null) {
     98                         value = (String)parameterMap.get(key);
     99                     } else {
    100                         value = "";
    101                     }
    102                     
    103                     parameterBuffer.append(key).append("=").append(value);
    104                     if (iterator.hasNext()) {
    105                         parameterBuffer.append("&");
    106                     }
    107                 }
    108             }
    109             
    110             System.out.println("POST parameter : " + parameterBuffer.toString());
    111             
    112             URL localURL = new URL(url);
    113             
    114             URLConnection connection = openConnection(localURL);
    115             HttpURLConnection httpURLConnection = (HttpURLConnection)connection;
    116             
    117             httpURLConnection.setDoOutput(true);
    118             httpURLConnection.setRequestMethod("POST");
    119             httpURLConnection.setRequestProperty("Accept-Charset", charset);
    120             httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    121             httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));
    122             
    123             OutputStream outputStream = null;
    124             OutputStreamWriter outputStreamWriter = null;
    125             InputStream inputStream = null;
    126             InputStreamReader inputStreamReader = null;
    127             BufferedReader reader = null;
    128             StringBuffer resultBuffer = new StringBuffer();
    129             String tempLine = null;
    130             
    131             try {
    132                 outputStream = httpURLConnection.getOutputStream();
    133                 outputStreamWriter = new OutputStreamWriter(outputStream);
    134                 
    135                 outputStreamWriter.write(parameterBuffer.toString());
    136                 outputStreamWriter.flush();
    137                 
    138                 if (httpURLConnection.getResponseCode() >= 300) {
    139                     throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
    140                 }
    141                 
    142                 inputStream = httpURLConnection.getInputStream();
    143                 inputStreamReader = new InputStreamReader(inputStream);
    144                 reader = new BufferedReader(inputStreamReader);
    145                 
    146                 while ((tempLine = reader.readLine()) != null) {
    147                     resultBuffer.append(tempLine);
    148                 }
    149                 
    150             } finally {
    151                 
    152                 if (outputStreamWriter != null) {
    153                     outputStreamWriter.close();
    154                 }
    155                 
    156                 if (outputStream != null) {
    157                     outputStream.close();
    158                 }
    159                 
    160                 if (reader != null) {
    161                     reader.close();
    162                 }
    163                 
    164                 if (inputStreamReader != null) {
    165                     inputStreamReader.close();
    166                 }
    167                 
    168                 if (inputStream != null) {
    169                     inputStream.close();
    170                 }
    171                 
    172             }
    173 
    174             return resultBuffer.toString();
    175         }
    176 
    177         private URLConnection openConnection(URL localURL) throws IOException {
    178             URLConnection connection;
    179             if (proxyHost != null && proxyPort != null) {
    180                 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
    181                 connection = localURL.openConnection(proxy);
    182             } else {
    183                 connection = localURL.openConnection();
    184             }
    185             return connection;
    186         }
    187         
    188         /**
    189          * Render request according setting
    190          * @param request
    191          */
    192         private void renderRequest(URLConnection connection) {
    193             
    194             if (connectTimeout != null) {
    195                 connection.setConnectTimeout(connectTimeout);
    196             }
    197             
    198             if (socketTimeout != null) {
    199                 connection.setReadTimeout(socketTimeout);
    200             }
    201             
    202         }
    203 
    204         /*
    205          * Getter & Setter
    206          */
    207         public Integer getConnectTimeout() {
    208             return connectTimeout;
    209         }
    210 
    211         public void setConnectTimeout(Integer connectTimeout) {
    212             this.connectTimeout = connectTimeout;
    213         }
    214 
    215         public Integer getSocketTimeout() {
    216             return socketTimeout;
    217         }
    218 
    219         public void setSocketTimeout(Integer socketTimeout) {
    220             this.socketTimeout = socketTimeout;
    221         }
    222 
    223         public String getProxyHost() {
    224             return proxyHost;
    225         }
    226 
    227         public void setProxyHost(String proxyHost) {
    228             this.proxyHost = proxyHost;
    229         }
    230 
    231         public Integer getProxyPort() {
    232             return proxyPort;
    233         }
    234 
    235         public void setProxyPort(Integer proxyPort) {
    236             this.proxyPort = proxyPort;
    237         }
    238 
    239         public String getCharset() {
    240             return charset;
    241         }
    242 
    243         public void setCharset(String charset) {
    244             this.charset = charset;
    245         }
    246 }

    直接获取

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            String code = request.getParameter("code");
            String appid = "wx4b4009c4fce00e0c";
            String secret = "4d3aea976157935e563f8ef01c7a4293";
            String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+wxCode+"&grant_type=authorization_code";
            //第一次请求 获取access_token 和 openid
            String  oppid = new HttpRequestor().doGet(requestUrl);
            JSONObject oppidObj =JSONObject.fromObject(oppid);
            String access_token = (String) oppidObj.get("access_token");
            String openid = (String) oppidObj.get("openid");
            String requestUrl2 = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openid+"&lang=zh_CN";
            String userInfoStr = new HttpRequestor().doGet(requestUrl2);
            JSONObject wxUserInfo =JSONObject.fromObject(userInfoStr); 
    }
  • 相关阅读:
    栈的实现
    函数传值 传地址 传引用的区别【转】
    sql server数据库最大Id冲突问题解决方法之一
    c#3.5关于JSON简单操作的实用帮助类(泛型实现)
    OLLYDBG
    SocketException.ErrorCode 列表及注释,Winsocket Error 列表及注释
    Netbeans5.5.1 连接 Mysql
    大型互联网网站架构心得之一:任务拆分
    工作流(WF)中使用SqlWorkflowPersistenceService创建完全的持久性服务
    Windows Phone学习笔记
  • 原文地址:https://www.cnblogs.com/itjcw/p/6762096.html
Copyright © 2011-2022 走看看