使用实例

实例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;
}