zoukankan      html  css  js  c++  java
  • 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便可以找到用户基本信息

  • 相关阅读:
    语言基础
    进制转换
    Java基础相关
    Java基础了解
    php 条件查询和多条件查询
    php 增删改查练习
    php 用封装类的方法操作数据库和批量删除
    php 用面向对象的方法对数据库增删改查
    php 面向对象的方式访问数据库
    OOP 7大原则
  • 原文地址:https://www.cnblogs.com/interdrp/p/5793813.html
Copyright © 2011-2022 走看看