java 获取用户openid_java获取点击微信自定义菜单的用户openid

测试:

先上 请求类 HttpRequesto

package reyo.sdk.utils.weixin;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.InetSocketAddress;

import java.net.Proxy;

import java.net.URL;

import java.net.URLConnection;

import java.util.Iterator;

import java.util.Map;

public class HttpRequestor {

private String charset = "utf-8";

private Integer connectTimeout = null;

private Integer socketTimeout = null;

private String proxyHost = null;

private Integer proxyPort = null;

/**

* Do GET request

*

* @param url

* @return

* @throws Exception

* @throws IOException

*/

public String doGet(String url) throws Exception {

URL localURL = new URL(url);

URLConnection connection = openConnection(localURL);

HttpURLConnection httpURLConnection = (HttpURLConnection) connection;

httpURLConnection.setRequestProperty("Accept-Charset", charset);

httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

InputStream inputStream = null;

InputStreamReader inputStreamReader = null;

BufferedReader reader = null;

StringBuffer resultBuffer = new StringBuffer();

String tempLine = null;

if (httpURLConnection.getResponseCode() >= 300) {

throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());

}

try {

inputStream = httpURLConnection.getInputStream();

inputStreamReader = new InputStreamReader(inputStream, "UTF-8");

reader = new BufferedReader(inputStreamReader);

while ((tempLine = reader.readLine()) != null) {

resultBuffer.append(tempLine);

}

} finally {

if (reader != null) {

reader.close();

}

if (inputStreamReader != null) {

inputStreamReader.close();

}

if (inputStream != null) {

inputStream.close();

}

}

return resultBuffer.toString();

}

/**

* Do POST request

*

* @param url

* @param parameterMap

* @return

* @throws Exception

*/

public String doPost(String url, Map, ?> parameterMap) throws Exception {

/* Translate parameter map to parameter date string */

StringBuffer parameterBuffer = new StringBuffer();

if (parameterMap != null) {

Iterator> iterator = parameterMap.keySet().iterator();

String key = null;

String value = null;

while (iterator.hasNext()) {

key = (String) iterator.next();

if (parameterMap.get(key) != null) {

value = (String) parameterMap.get(key);

} else {

value = "";

}

parameterBuffer.append(key).append("=").append(value);

if (iterator.hasNext()) {

parameterBuffer.append("&");

}

}

}

System.out.println("POST parameter : " + parameterBuffer.toString());

URL localURL = new URL(url);

URLConnection connection = openConnection(localURL);

HttpURLConnection httpURLConnection = (HttpURLConnection) connection;

httpURLConnection.setDoOutput(true);

httpURLConnection.setRequestMethod("POST");

httpURLConnection.setRequestProperty("Accept-Charset", charset);

httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));

OutputStream outputStream = null;

OutputStreamWriter outputStreamWriter = null;

InputStream inputStream = null;

InputStreamReader inputStreamReader = null;

BufferedReader reader = null;

StringBuffer resultBuffer = new StringBuffer();

String tempLine = null;

try {

outputStream = httpURLConnection.getOutputStream();

outputStreamWriter = new OutputStreamWriter(outputStream);

outputStreamWriter.write(parameterBuffer.toString());

outputStreamWriter.flush();

if (httpURLConnection.getResponseCode() >= 300) {

throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());

}

inputStream = httpURLConnection.getInputStream();

inputStreamReader = new InputStreamReader(inputStream);

reader = new BufferedReader(inputStreamReader);

while ((tempLine = reader.readLine()) != null) {

resultBuffer.append(tempLine);

}

} finally {

if (outputStreamWriter != null) {

outputStreamWriter.close();

}

if (outputStream != null) {

outputStream.close();

}

if (reader != null) {

reader.close();

}

if (inputStreamReader != null) {

inputStreamReader.close();

}

if (inputStream != null) {

inputStream.close();

}

}

return resultBuffer.toString();

}

private URLConnection openConnection(URL localURL) throws IOException {

URLConnection connection;

if (proxyHost != null && proxyPort != null) {

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));

connection = localURL.openConnection(proxy);

} else {

connection = localURL.openConnection();

}

return connection;

}

/*

* Getter & Setter

*/

public Integer getConnectTimeout() {

return connectTimeout;

}

public void setConnectTimeout(Integer connectTimeout) {

this.connectTimeout = connectTimeout;

}

public Integer getSocketTimeout() {

return socketTimeout;

}

public void setSocketTimeout(Integer socketTimeout) {

this.socketTimeout = socketTimeout;

}

public String getProxyHost() {

return proxyHost;

}

public void setProxyHost(String proxyHost) {

this.proxyHost = proxyHost;

}

public Integer getProxyPort() {

return proxyPort;

}

public void setProxyPort(Integer proxyPort) {

this.proxyPort = proxyPort;

}

public String getCharset() {

return charset;

}

public void setCharset(String charset) {

this.charset = charset;

}

}

直接获取

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

}

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

跳转后会生成一个code  获取code便可以找到用户基本信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值