Use java to develop WeChat to actively push messages to WeChat instances

Source: Internet
Author: User
This article describes how to use java to actively push messages during development. For more information about how to use java to actively push messages, see the following article, for more information, see


1. pull access_token
2. pull user information
3. actively push messages
4. the interface seems to have to apply for permissions
5. dependent on httpclient4.2.3 and jackson 2.2.1

The code is as follows:

Public class WeixinAPIHelper {/*** get token interface */private String getTokenUrl =" https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid= {0} & secret = {1} ";/*** User information interface */private String getUserInfoUrl =" https://api.weixin.qq.com/cgi-bin/user/info?access_token= {0} & openid = {1} ";/*** push info interface */private String sendMsgUrl =" https://api.weixin.qq.com/cgi-bin/message/send?access_token= {0} "; private HttpClient webClient; private Log log = LogFactory. getLog (getClass (); public void initWebClient (String proxyHost, int proxyPort) {this. initWebClient (); if (webClient! = Null &&! StringUtils. isEmpty (proxyHost) {HttpHost proxy = new HttpHost (proxyHost, proxyPort); webClient. getParams (). setParameter (ConnRoutePNames. DEFAULT_PROXY, proxy) ;}}/*** @ desc initialize and create WebClient */public void initWebClient () {log.info ("initWebClient start .... "); try {PoolingClientConnectionManager tcm = new PoolingClientConnectionManager (); tcm. setMaxTotal (10); SSLContext ctx = SSLContext. getInstance ("TLS"); X509TrustManager tm = new X509TrustManager () {public void checkClientTrusted (parts [] arg0, String arg1) throws CertificateException {} public void checkServerTrusted (parts [] arg0, string arg1) throws CertificateException {} public X509Certificate [] getAcceptedIssuers () {return null ;}; ctx. init (null, new X509TrustManager [] {tm}, null); SSLSocketFactory ssf = new SSLSocketFactory (ctx, SSLSocketFactory. ALLOW_ALL_HOSTNAME_VERIFIER); Scheme sch = new Scheme ("https", 443, ssf); tcm. getSchemeRegistry (). register (sch); webClient = new DefaultHttpClient (tcm);} catch (Exception ex) {log. error ("initWebClient exception", ex);} finally {log.info ("initWebClient end .... ") ;}}/*** @ desc get authorization token * @ param appid * @ param secret * @ return */public String getAccessToken (String appid, String secret) {String accessToken = null; try {log.info ("getAccessToken start. {appid = "+ appid +", secret: "+ secret +"} "); String url = MessageFormat. format (this. getTokenUrl, appid, secret); String response = executeHttpGet (url); accessToken = JsonUtils. read (response, "access_token");} catch (Exception e) {log. error ("get access toekn exception", e);} return accessToken ;} /*** @ desc push information * @ param token * @ param msg * @ return */public String sendMessage (String token, String msg) {try {log.info ("sendMessage start. token: "+ token +", msg: "+ msg); String url = MessageFormat. format (this. sendMsgUrl, token); HttpPost post = new HttpPost (url); ResponseHandler
 ResponseHandler = new BasicResponseHandler (); StringEntity entity = new StringEntity (msg); post. setEntity (entity); String response = (String) this.webClient.exe cute (post, responseHandler); log.info ("return response ==== start ==== "); log.info (response); log.info ("return response ==== end ===="); return response ;}catch (Exception e) {log. error ("get user info exception", e); return null ;}}/*** @ Desc pull user information * @ param token * @ param openid * @ return */public WeixinOpenUser getUserInfo (String token, String openid) {try {log.info ("getUserInfo start. {token: "+ token +", openid: "+ openid +"} "); String url = MessageFormat. format (this. getUserInfoUrl, token, openid); String response = executeHttpGet (url); JsonNode json = JsonUtils. read (response); if (json. get ("openid ")! = Null) {WeixinOpenUser user = new WeixinOpenUser (); user. setOpenUserId (json. get ("openid "). asText (); user. setState (json. get ("subscribe "). asText (); if ("1 ". equals (user. getState () {user. setUserName (json. get ("nickname "). asText (); user. setSex (json. get ("sex "). asText (); user. setCity (json. get ("city "). asText (); user. setLanguage (json. get ("language "). asText ();} return user;} catch (Exception e) {log. error ("get user info exception", e);} return null ;} /*** @ desc initiates an http get request to return data * @ param url * @ return * @ throws IOException * @ throws ClientProtocolException */private String executeHttpGet (String url) throws IOException, clientProtocolException {ResponseHandler
 ResponseHandler = new BasicResponseHandler (); String response = (String) this.webClient.exe cute (new HttpGet (url), responseHandler ); log.info ("return response ==== start ===="); log.info (response ); log.info ("return response ==== end ===="); return response ;}}

The preceding section describes how to actively push message instances using java development. For more information, see other related articles on php Chinese network!

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.