請求微信服務器獲取用戶數據工具類
使用http請求,使用fastjson將jsonString轉成object
public class WeiXinUtil {
/**
* 獲取access_token
* @param code url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code ";
* */
public static OAuthInfo getAccess_token(String code){
String authUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code ";
authUrl= authUrl.replace("APPID", Param.APPID);
authUrl = authUrl.replace("SECRET", Param.SECRET);
authUrl = authUrl.replace("CODE", code);
String jsonString = HTTPRequestUtil.sendPost(authUrl,"");
OAuthInfo auth = null;
try {
auth = (OAuthInfo) FastJson.getObjectJson(OAuthInfo.class, jsonString);
} catch (Exception e) {
e.printStackTrace();
}
return auth;
}
/**
* 獲取全局access_token,也就是token,
* @return 請確保在服務上線前必定全局緩存access_token和jsapi_ticket,二者有效期均爲7200秒,不然一旦上線觸發頻率限制,服務將再也不可用
* */
public static Token getToken(){
String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
tokenUrl = tokenUrl.replace("SECRET", Param.SECRET);
tokenUrl = tokenUrl.replace("APPID", Param.APPID);
String tokenjson = HTTPRequestUtil.sendPost(tokenUrl, "");
Token token = null;
try {
token = (Token) FastJson.getObjectJson(Token.class, tokenjson);
} catch (Exception e) {
return null;
}
return token;
}
/**
* 獲取userinfo
* @param access_token 不彈受權則使用全局token
* @param openid 用戶的openid
* @param isOpen 是否彈出受權
* @param isOpen false:不彈受權請求 url="https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN ";
* @param isOpen true:彈受權請求url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN ";
* **/
public static User getUser(String access_token,String openid,boolean isOpen){
String userUrl="";
if(isOpen){
userUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN ";
}else{
userUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN ";
}
userUrl = userUrl.replace("ACCESS_TOKEN", access_token);
userUrl = userUrl.replace("OPENID", openid);
String jsonUser = HTTPRequestUtil.sendPost(userUrl, "");
User user = null;
try {
user = (User) FastJson.getObjectJson(User.class, jsonUser);
} catch (Exception e) {
return null;
}
return user;
}
/**
* @param token 全局token
* 獲取config的ticket;
*
* */
public static String getConfig(){
String ticketUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
ticketUrl = ticketUrl.replace("ACCESS_TOKEN", Param.TOKEN.getAccess_token());
String ticketJson = HTTPRequestUtil.sendPost(ticketUrl, "");
JSONObject ticket = JSON.parseObject(ticketJson);
return ticket.get("ticket").toString();
}
}
用到的類
<pre name="code" class="java">public class OAuthInfo {
private String access_token;
private String expires_in;
private String refresh_token;
private String openid;
private String scope;
private String unionid;
}
public class Token {
private String access_token;
private long expires_in;
private long endTime;
}
public class User {
private int id;
private String subscribe;
private String nickname;
private String sex;
private String language;
private String city;
private String province;
private String country;
private String headimgurl;
private String openid;
private String subscribe_time;
private int number;
private Gift gift;
}
public class Param {
<span style="white-space:pre"> </span>public static String APPID = "88888888";
<span style="white-space:pre"> </span>public static String SECRET = "88888888";
<span style="white-space:pre"> </span>public static String TICKET;
<span style="white-space:pre"> </span>public static Token TOKEN;
}
set/get方法都沒放上來,http請求和fastjson網上能夠找到