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!