1. Потяните access_token
2. Получите информацию пользователя
3. активно разжигать сообщения
4. Интерфейс, по -видимому, требует разрешения
5. Полагаться на httpclient4.2.3 и Джексон 2.2.1
Кода -копия выглядит следующим образом:
открытый класс weixinapihelper {
/**
* Получите интерфейс токена
*/
Приватная строка getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=?
/**
* Включите интерфейс пользователя WeChat
*/
Private String getUserInfourl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=____&openid=}";
/**
* Информационный интерфейс Active Push
*/
Private String SendMsGurl = "https://api.weixin.qq.com/cgi-bin/message/send?access_token=}";
Частный 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 Инициализируйте создание WebClient
*/
public void initWebClient () {
log.info ("initWebClient Start ....");
пытаться {
PoolingClientConnectionManager TCM = новый PoolingClientConnectionManager ();
TCM.Setmaxtotal (10);
Sslcontext ctx = sslcontext.getInstance ("tls");
X509trustmanager tm = new x509trustmanager () {
public void checkClientTrusted (x509certificate [] arg0, string arg1) бросает сертификацию {
}
public void CheckServerTrusted (x509Certificate [] arg0, String arg1) бросает сертификат Exception {
}
public x509Certificate [] getAcceptedIssuers () {
вернуть ноль;
}
};
ctx.init (null, new x509trustmanager [] {tm}, null);
Sslsocketfactory ssf = new sslsocketfactory (ctx, sslsocketfactory.ally_all_hostname_verifier);
Схема sch = новая схема ("https", 443, ssf);
tcm.getschemeregistry (). Register (sch);
webclient = new DefaulthttpClient (TCM);
} catch (Exception ex) {
log.error ("initWebClient Exception", Ex);
} окончательно {
log.info ("initwebclient end ...");
}
}
/**
* @desc получите авторизованный токен
* @param appid
* @param secret
* @возвращаться
*/
public String getAccessToken (String Appid, String Secret) {
String accessToken = null;
пытаться {
log.info ("getAccessToken Start. {appid =" + appid + ", secret:" + secret + "}");
String url = messageFormat.format (this.getTokenUrl, Appid, Secret);
String response = executehttpget (url);
accesstoken = jsonutils.read (ответ, "access_token");
} catch (Exception e) {
log.error ("получить доступ к исключению Toekn", E);
}
вернуть Accestoken;
}
/**
* @desc push inform
* @param токен
* @param msg
* @возвращаться
*/
public String sendmessage (String token, String msg) {
пытаться{
log.info ("sendmessage start.token:"+token+", msg:"+msg);
String url = messageFormat.format (this.sendmsgurl, token);
Httppost post = new httppost (url);
Responsehandler <?> Responsehandler = new BasicResponseHandler ();
Strongity entity = new строгость (msg);
post.setentity (сущность);
String response = (string) this.webclient.execute (post, responsehandler);
log.info ("return response ====== start ==========================================================================================
log.info (ответ);
log.info("return response=====end=====================);
ответный ответ;
} catch (Exception e) {
log.Error ("Получить информацию об пользователю исключение", e);
вернуть ноль;
}
}
/**
* @Desc вытащить информацию пользователя
* @param токен
* @param openid
* @возвращаться
*/
public weixinopenuser getuserinfo (string token, string openid) {
пытаться {
log.info ("getuserinfo start. {token:" + token + ", openid:" + openid + "}");
String url = messageFormat.format (this.getUserInfourl, token, openid);
String response = executehttpget (url);
Jsonnode json = jsonutils.read (ответ);
if (json.get ("openid")! = null) {
Weixinopenuser user = new weixinopenuser ();
user.setopenuserid (json.get ("openid"). astext ());
user.setState (json.get ("подписка"). astext ());
if ("1" .equals (user.getState ())) {
user.setusername (json.get ("chicname"). astext ());
user.setsex (json.get ("sex"). astext ());
user.setCity (json.get ("city"). astext ());
user.setlanguage (json.get ("language"). astext ());
}
вернуть пользователь;
}
} catch (Exception e) {
log.Error ("Получить информацию об пользователю исключение", e);
}
вернуть ноль;
}
/**
* @desc инициирует http get запрос на возврат данных
* @param url
* @возвращаться
* @Throws ioException
* @Throws ClientProtoColexception
*/
private String executehttpget (string url) выбрасывает ioException, clientProtocolexception {
Responsehandler <?> Responsehandler = new BasicResponseHandler ();
String response = (string) this.webclient.execute (new httpget (url), responsehandler);
log.info ("return response ====== start ==========================================================================================
log.info (ответ);
log.info("return response=====end=====================);
ответный ответ;
}
}