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 setting190  * @param request191 */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 & Setter206 */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 }

 

java 获取微信 页面授权 获取用户openid

 

 

直接获取

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); }

 

相关文章