使用实例
实例1:使用oauth网页授权获取用户信息
public class TestCaseAction extends BaseAction<TestCaseModel> {
public String ceShi() {
String code = request.getParameter("code");
String appid = "wxc701114d7e989dc4";
String appsecret = "f1f5327ec1b4f7042e7f017f9d051331";
StringBuilder url = new StringBuilder("https://api.weixin.qq.com/sns/
oauth2/access_token?");
url.append("appid=").append(appid);
url.append("&secret=").append(appsecret);
url.append("&code=").append(code);
url.append("&grant_type=").append("authorization_code");
ResponseContent result = HTTPSClient.getUrlRespContent(
url.toString());
String resultContent = null;
try {
resultContent = result.getContent();
} catch (UnsupportedEncodingException e) {
log.error("Get wx openId error!", e);
}
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> responseMap = new
HashMap<String, Object>();
try {
responseMap = objectMapper.readValue(resultContent
, Map.class);
} catch (IOException e) {
log.error("Get wx openId responseMap error!", e);
}
String wxOpenId = null;
String access_token = null;
if (responseMap.get("errcode") == null) {
wxOpenId = (String) responseMap.get("openid");
access_token = (String) responseMap.get("access_token");
}
url = new StringBuilder("https://api.weixin.qq.com/
sns/userinfo?");
url.append("access_token=").append(access_token);
url.append("&openid=").append(wxOpenId);
ResponseContent userContent =HTTPSClient.getUrlRespContent
(url.toString());
userContent.setEncoding("UTF-8");
try {
resultContent = userContent.getContent();
} catch (UnsupportedEncodingException e) {
log.error("Get wx openId error!", e);
}
try {
responseMap = objectMapper.readValue(resultContent
, Map.class);
} catch (IOException e) {
log.error("Get wx openId responseMap error!", e);
}
model.setCode(code);
model.setOpenId(wxOpenId);
model.setUserNikeName ((String) responseMap.get("nickname"));
return SUCCESS;
}
}
实例2:公众号应用服务器端发送图文消息
// 自定义菜单点击事件
if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
if (eventKey.equalsIgnoreCase("LOGIN")) {
respContent.append(loginMsg(request, fromUserName));
}else if(eventKey.equalsIgnoreCase("send_news")){
NewsMessage newsMessage = new NewsMessage();
newsMessage.setToUserName(fromUserName);
newsMessage.setFromUserName(toUserName);
newsMessage.setCreateTime(new Date().getTime());
newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
newsMessage.setArticleCount(2);
List<Article> articles = new ArrayList<Article>();
Article article = new Article();
article.setTitle("文章1");
article.setDescription("挺好的一篇文章");
article.setPicUrl("http://yufa.21tb.com/wx/images/course/
els_course_cover_default.png");
article.setUrl("");
articles.add(article);
Article article1 = new Article();
article1.setTitle("文章2");
article1.setDescription("挺好的一篇文章");
article1.setPicUrl("http://yufa.21tb.com/wx/images/course/
els_course_cover_default.png");
article1.setUrl("");
articles.add(article1);
newsMessage.setArticles(articles);
respMessage = MessageUtil.newsMessageToXml(newsMessage);
return respMessage;
}
}
实例三:微信jssdk调用,获取调用api的票据(jsapi_ticket是公众号用于调用微信JS接口的临时票据)
1.获取access_token
/**
* 获取接口访问凭证
*
* @param appid 凭证
* @param appsecret 密钥
* @return
*/
public static String getAccess_token(String appid, String appsecret) {
//凭证获取(GET)
String token_url = "https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid=APPID&secret=APPSECRET";
String requestUrl = token_url.replace("APPID", appid).replace("
APPSECRET", appsecret);
// 发起GET请求获取凭证
JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);
String access_token = null;
if (null != jsonObject) {
try {
access_token = jsonObject.getString("access_token");
} catch (JSONException e) {
// 获取token失败
log.error("获取token失败 errcode:{} errmsg:{}"
, jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
}
return access_token;
}
2.获取jsapi_ticket
/**
* 调用微信JS接口的临时票据
*
* @param access_token 接口访问凭证
* @return
*/
public static String getJsApiTicket(String access_token) {
String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?
access_token=ACCESS_TOKEN&type=jsapi";
String requestUrl = url.replace("ACCESS_TOKEN", access_token);
// 发起GET请求获取凭证
JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);
String ticket = null;
if (null != jsonObject) {
try {
ticket = jsonObject.getString("ticket");
} catch (JSONException e) {
// 获取token失败
log.error("获取token失败 errcode:{} errmsg:{}"
, jsonObject.getInt("errcode"),
jsonObject.getString("errmsg"));
}
}
return ticket;
}