- 浏览: 362193 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Cleverxia:
[size=x-small][size=xx-small][c ...
拼接JSON字符串 -
dongbiying:
我找到原因啦。。。// float dlng = 2 * as ...
根据经纬度查询附近的点 -
dongbiying:
请问楼主。我现在传的值是double lat = 39.905 ...
根据经纬度查询附近的点 -
di1984HIT:
真的不错。啊
web.xml配置错误页面跳转 -
yuxiaolongwin:
可以加 j2ee.jar包也行
javax.servlet.jsp.PageContext cannot be resolved to a type
1.微信使用https协议,so,编写https工具类:
2.编写微信用户基本信息对应类。
3.编写微信工具类
package com.lishidao.app.controller; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.StringWriter; import java.net.HttpURLConnection; import java.net.URL; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HttpsUtil { /** log记录 */ protected static final Logger log = LoggerFactory .getLogger(HttpsUtil.class); private static final String METHOD_POST = "POST"; private static final String DEFAULT_CHARSET = "utf-8"; public static String doPost(String url, String params, String charset, int connectTimeout, int readTimeout) throws Exception { String ctype = "application/json;charset=" + charset; byte[] content = {}; if (params != null) { content = params.getBytes(charset); } return doPost(url, ctype, content, connectTimeout, readTimeout); } public static String doPost(String url, String ctype, byte[] content, int connectTimeout, int readTimeout) throws Exception { HttpsURLConnection conn = null; OutputStream out = null; String rsp = null; try { try { SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom()); SSLContext.setDefault(ctx); conn = getConnection(new URL(url), METHOD_POST, ctype); conn.setHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); conn.setConnectTimeout(connectTimeout); conn.setReadTimeout(readTimeout); } catch (Exception e) { log.error("GET_CONNECTOIN_ERROR, URL = " + url, e); throw e; } try { out = conn.getOutputStream(); out.write(content); rsp = getResponseAsString(conn); } catch (IOException e) { log.error("REQUEST_RESPONSE_ERROR, URL = " + url, e); throw e; } } finally { if (out != null) { out.close(); } if (conn != null) { conn.disconnect(); } } return rsp; } private static class DefaultTrustManager implements X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } } private static HttpsURLConnection getConnection(URL url, String method, String ctype) throws IOException { HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod(method); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestProperty("Accept", "text/xml,text/javascript,text/html"); conn.setRequestProperty("User-Agent", "stargate"); conn.setRequestProperty("Content-Type", ctype); return conn; } protected static String getResponseAsString(HttpURLConnection conn) throws IOException { String charset = getResponseCharset(conn.getContentType()); InputStream es = conn.getErrorStream(); if (es == null) { return getStreamAsString(conn.getInputStream(), charset); } else { String msg = getStreamAsString(es, charset); if (StringUtils.isEmpty(msg)) { throw new IOException(conn.getResponseCode() + ":" + conn.getResponseMessage()); } else { throw new IOException(msg); } } } private static String getStreamAsString(InputStream stream, String charset) throws IOException { try { BufferedReader reader = new BufferedReader(new InputStreamReader( stream, charset)); StringWriter writer = new StringWriter(); char[] chars = new char[256]; int count = 0; while ((count = reader.read(chars)) > 0) { writer.write(chars, 0, count); } return writer.toString(); } finally { if (stream != null) { stream.close(); } } } private static String getResponseCharset(String ctype) { String charset = DEFAULT_CHARSET; if (!StringUtils.isEmpty(ctype)) { String[] params = ctype.split(";"); for (String param : params) { param = param.trim(); if (param.startsWith("charset")) { String[] pair = param.split("=", 2); if (pair.length == 2) { if (!StringUtils.isEmpty(pair[1])) { charset = pair[1].trim(); } } break; } } } return charset; } public static void main(String[] args) throws Exception{ String url = "https://www.baidu.com"; String params = "v=1&r=2"; String result = HttpsUtil.doPost(url, params, "UTF-8", 5000, 5000); System.out.println(result); } }
2.编写微信用户基本信息对应类。
package com.lishidao.app.controller; public class WeiXinUser { public String subscribe; public String openid; public String nickname; public String sex; public String language; public String city; public String province; public String country; public String headimgurl; public String subscribe_time; public String unionid; public String getSubscribe() { return subscribe; } public void setSubscribe(String subscribe) { this.subscribe = subscribe; } public String getOpenid() { return openid; } public void setOpenid(String openid) { this.openid = openid; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getHeadimgurl() { return headimgurl; } public void setHeadimgurl(String headimgurl) { this.headimgurl = headimgurl; } public String getSubscribe_time() { return subscribe_time; } public void setSubscribe_time(String subscribe_time) { this.subscribe_time = subscribe_time; } public String getUnionid() { return unionid; } public void setUnionid(String unionid) { this.unionid = unionid; } public String toString() { return subscribe + "|" + openid + "|" + nickname + "|" + sex + "|" + language + "|" + city + "|" + province + "|" + country + "|" + headimgurl + "|" + subscribe_time + "|" + unionid; } }
3.编写微信工具类
package com.lishidao.app.controller; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSONObject; import framecore.util.DateUtil; public class WeiXinUtil { private static final Map<String, String> tokenMap = new HashMap<String, String>(); private static String appid = "APPID"; private static String secret = "SECRET"; public static String getToken() throws Exception { System.out.println("get token start......"); String key = DateUtil.getDateShortString(new Date()); if (tokenMap.containsKey(key)) { String token = tokenMap.get(key); System.out.println("tokenMap.token:" + token); System.out.println("get token end......"); return token; } String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; String jsonStr = HttpsUtil.doPost(url, "", "UTF-8", 10000, 10000); System.out.println(jsonStr); JSONObject json = (JSONObject) JSONObject.parse(jsonStr); String token = json.getString("access_token"); tokenMap.clear(); tokenMap.put(key, token); System.out.println("getToken:" + token); System.out.println("get token end......"); return token; } public static WeiXinUser getWeiXinUser(String openid) throws Exception { System.out.println("get user start......"); String token = getToken(); String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + token + "&openid=" + openid + "&lang=zh_CN"; String jsonStr = HttpsUtil.doPost(url, "", "UTF-8", 10000, 10000); System.out.println(jsonStr); JSONObject json = (JSONObject) JSONObject.parse(jsonStr); WeiXinUser weiXinUser = JSONObject.toJavaObject(json, WeiXinUser.class); System.out.println("get user end......"); return weiXinUser; } public static String getViewOpenid(String code) throws Exception { System.out.println("get openid start......"); String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code"; String jsonStr = HttpsUtil.doPost(url, "", "UTF-8", 10000, 10000); System.out.println(jsonStr); JSONObject json = (JSONObject) JSONObject.parse(jsonStr); String openid = json.getString("openid"); System.out.println("get openid end......"); return openid; } public static void main(String[] args) throws Exception { WeiXinUtil.getToken(); WeiXinUtil.getToken(); WeiXinUtil.getToken(); String code = "code"; WeiXinUtil.getViewOpenid(code); String openid = "openid"; WeiXinUtil.getWeiXinUser(openid); } }
发表评论
-
java-memcached使用实例
2014-05-30 11:06 759package com.memcache; impo ... -
线程死锁的例子
2014-05-28 16:27 1284package test; public class D ... -
ThreadLocal使用实例
2014-05-27 17:18 12202ThreadLocal为每一个线程都提供了变量的副本,使得每个 ... -
JVM内存区溢出场景模拟
2014-05-15 09:38 902模拟jvm内存溢出,需手动设置jvm启动参数。方法如下图: 在 ... -
获取日期工具类-周一定时执行任务工具类
2014-04-01 15:57 810获取日期工具类 参照地址:http://www.jb51.ne ... -
根据经纬度查询附近的点
2014-04-01 10:41 12730大致思想:根据给定经纬度(lat,lng)求出其左上角(lef ... -
使用httpClient和httpParser获取指定网址的title
2013-10-23 17:57 3245package com.xinhuanet.cloudDe ... -
SessionContextUtil
2013-09-18 10:59 690package com.xinhuanet.cloudDe ... -
使用反射封装RowMapper
2013-08-13 15:16 1883package com.xinhuanet.cloudDe ... -
分页工具类
2013-08-06 17:29 744package com.xinhuanet.cloudDe ... -
BidiMap.MultiMa.LazyMap
2012-05-24 18:18 1183本文摘自:http://501565246-qq-com.it ... -
拼接JSON字符串
2012-04-27 18:01 16644package jp.co.qualica.kcm.act ... -
java调用存储过程
2012-02-22 11:59 973package test; import java. ... -
java发邮件例子
2011-12-29 12:11 1163package test; import java. ... -
java反射检测参数的某个字段不能为空
2011-11-29 12:11 5086package test; import java.la ... -
java常用工具类例子
2011-11-29 12:08 1014package test; import java.te ... -
Date用法一例
2011-11-10 12:34 765package test; import java. ... -
多线程通信学习
2011-03-07 11:55 1007鉴于上次惨痛的教训,我决定重新认识下java。昨天没事儿的时候 ... -
从string中获取date
2011-02-17 11:18 882package test.poi; import j ... -
java代码实现文件打包
2011-01-14 16:50 1042网上找了一个文件打包 ...
相关推荐
php获取微信用户基本信息
包括了在微信公众号中获取微信用户openid的方法,然后根据access_token和openid获取微信用户基本信息的方法。解决了返回的微信用户基本信息乱码问题以及解决乱码问题时需要的jar包。
获取微信用户的基本信息(头像,昵称,微信号等...),直接当做控制器使用,更改命名空间后,引入实例化之后,执行里面的方法即可。
在Java开发中,获取微信用户信息通常涉及到微信官方提供的OAuth2.0授权协议。OAuth2.0是一个开放标准,允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供者上的信息。这种方式允许用户授权第三...
ASP获取微信用户信息是Web开发中的一个常见需求,特别是在构建与微信平台集成的应用时。ASP(Active Server Pages)是一种微软公司的服务器端脚本环境,它允许开发者在服务器上动态生成HTML、XML或其他格式的文档。...
C#微信公众号获取用户基本信息代码可用(asp.net),可以获取到用户信息的。
c#获取微信公众号openid,并根据公众号openid获取微信用户名用户信息与头像等,简单易懂。
微信公众号获取openid与基本信息源码,获取微信公众号openid,并根据公众号openid获取微信用户名用户信息与头像等,简单易懂。
在Java开发中,微信API的使用是一个常见的需求,特别是对于获取微信用户信息这一功能。本项目提供了一套基于Servlet和JSP实现的解决方案,利用OAuth2.0授权机制,简化了开发者对接微信接口的复杂性。 OAuth2.0是...
在微信小程序的开发过程中,...以上就是使用C#和asp.net服务器端获取微信小程序openid及用户信息的基本流程。在实际开发中,还需要考虑异常处理、错误反馈、用户隐私保护等多方面的问题,以提供更安全、稳定的服务。
微信授权获取用户基本信息 //nickname = outputObj1["nickname"].ToString(); //昵称 //sex = outputObj1["sex"].ToString(); //性别 headimgurl = outputObj1["headimgurl"].ToString(); //头像url //province ...
3、通过access_token和用户的openId获取该用户的用户信息 因为第一步必须要经过微信的登录授权,不能网页后端请求,所以先要经过用户同意,通过页面网页请求组装的微信请求链接。请求该链接, 获取code后,后端...
微信获取用户基本信息(UnionID机制)
本文将详细解释如何使用PHP获取微信用户的code、openid、名字和头像。这些信息对于构建微信登录、用户授权等功能至关重要。 首先,我们需要理解微信OAuth2.0授权流程。微信提供了OAuth2.0接口,允许第三方应用引导...
本文将详细解析"微信获取用户信息demo"这个项目,它是一个已经封装好的JAVA实现,旨在帮助开发者快速集成微信用户信息获取功能。 1. **微信OAuth2.0授权流程** 微信提供了OAuth2.0授权机制,允许第三方应用在用户...
微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["re...
`easp.weixin.asp` 文件提供了一种使用ASP技术实现微信用户信息获取的方法。通过定义一个名为`EasyAsp_Weixin`的类,管理了与微信API交互所需的各种参数,并提供了相应的初始化和终结方法。此外,还支持对关键属性如...
有了Access Token,可以调用微信的“获取用户基本信息”接口,传入Access Token和OpenID(每个微信用户唯一标识)。返回的数据通常是JSON格式,包括昵称(nickname)、性别(sex,1为男性,2为女性)、头像URL...
拿到access_token和openid后,可以通过微信的接口获取用户的基本信息,如昵称、头像、性别等。对于企业微信,还可以获取到用户的企业信息,如部门、职位等。 3. **企业微信授权登录** 企业微信授权登录与微信网页...