1. Tire de Access_Token
2. Extrae la información del usuario
3. Empuje activamente mensajes
4. La interfaz parece requerir permiso
5. Confiando en httpclient4.2.3 y Jackson 2.2.1
La copia del código es la siguiente:
clase pública weixinapihelper {
/**
* Obtenga la interfaz de token
*/
cadena privada getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid= =0thingsecret= =1}";
/**
* Tire de la interfaz de información del usuario de WeChat
*/
Cadena privada getUserInfourl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token= ]&openid= /1}";
/**
* Interfaz de información de empuje activo
*/
cadena privada sendmsgurl = "https://api.weixin.qq.com/cgi-bin/message/send?access_token= =0}";
PRIVADO HTTPCLIENT WEBCLIENT;
log private log = logFactory.getLog (getClass ());
public void initWebClient (string proxyHost, int proxyport) {
this.initWebClient ();
if (webclient! = null &&! stringUtils.isEmpty (proxyHost)) {
Httphost proxy = nuevo httphost (proxyhost, proxyport);
webclient.getParams (). setParameter (connroutePnames.default_proxy, proxy);
}
}
/**
* @Desc Inicializa la creación de WebClient
*/
public void initWebClient () {
log.info ("InitWebclient Start ...");
intentar {
PoolingClientConnectionManager tcm = new PoolingClientConnectionManager ();
TCM.SetMaxtotal (10);
SslContext ctx = sslContext.getInstance ("tls");
X509TrustManager tm = new X509TrustManager () {
public void checkClientTrusted (x509Certificate [] arg0, string arg1) lanza certificateException {
}
public void checkServerTrusted (x509Certificate [] arg0, string arg1) lanza certificateException {
}
public X509Certificate [] getACceptedIssuers () {
regresar nulo;
}
};
ctx.init (nulo, nuevo x509TrustManager [] {tm}, nulo);
SslsocketFactory ssf = new sslsocketFactory (ctx, sslsocketfactory.how_all_hostname_verifier);
Esquema sch = nuevo esquema ("https", 443, ssf);
tcm.getSchemeregistry (). Registro (SCH);
webClient = new DeFaulThttpClient (TCM);
} Catch (Exception Ex) {
log.error ("InitWebClient Exception", Ex);
} finalmente {
log.info ("initwebclient end ...");
}
}
/**
* @Desc obtenga un token autorizado
* @param Appid
* @param secreto
* @devolver
*/
Public String getAccessToken (String Appid, String Secret) {
String accessToken = null;
intentar {
log.info ("GetAccessToken Start. {Appid =" + Appid + ", Secret:" + Secret + "}");
Cadena url = MessageFormat.Format (this.getTokenurl, appid, secret);
Respuesta de cadena = ExecuteHttpget (url);
accessToken = jsonutils.read (respuesta, "access_token");
} capt (excepción e) {
log.error ("Obtener la excepción de acceso de acceso", e);
}
regresar accesstoken;
}
/**
* @Desc Información de empuje
* @param token
* @param msg
* @devolver
*/
public String sendMessage (token de cadena, string msg) {
intentar{
log.info ("sendMessage start.token:"+token+", msg:"+msg);
Cadena url = MessageFormat.Format (this.sendmsGurl, token);
Httppost post = new httppost (url);
ResponseHandler <?> ResponseHandler = new BasicResponseHandler ();
StringEntity entity = new StringEntity (msg);
post.setEntity (entidad);
String Response = (String) this.webclient.execute (Post, ResponseHandler);
log.info ("Respuesta de retorno ====== Start ====================);
log.info (respuesta);
log.info ("Respuesta de retorno ===== end ======================);
Respuesta de retorno;
} Catch (Exception e) {
log.error ("Obtener la excepción de información del usuario", E);
regresar nulo;
}
}
/**
* @Desc extrae la información del usuario
* @param token
* @param openid
* @devolver
*/
public weixinopenuser getUserInfo (token de cadena, string openId) {
intentar {
log.info ("getUserInfo start. {token:" + token + ", openId:" + openId + "}");
String url = MessageFormat.Format (this.getuserInfourl, token, OpenID);
Respuesta de cadena = ExecuteHttpget (url);
Jsonnode json = jsonutils.read (respuesta);
if (json.get ("OpenID")! = NULL) {
Weixinopenuser user = new Weixinopenuser ();
user.SetOpenUserId (json.get ("OpenId"). ASTEXT ());
user.setState (json.get ("suscríbete"). astext ());
if ("1" .equals (user.getState ())) {
user.setUsername (json.get ("apodo"). astext ());
user.setsex (json.get ("sexo"). astext ());
user.setCity (json.get ("ciudad"). astext ());
user.setLanguage (json.get ("idioma"). astext ());
}
devolver el usuario;
}
} capt (excepción e) {
log.error ("Obtener la excepción de información del usuario", E);
}
regresar nulo;
}
/**
* @Desc inicia HTTP Obtener solicitud para devolver datos
* @param url
* @devolver
* @throws ioexception
* @throws clientProtocolexception
*/
Private String ExecuteHttpget (String URL) lanza IOException, ClientProtocolexception {
ResponseHandler <?> ResponseHandler = new BasicResponseHandler ();
String Response = (String) this.webclient.execute (new httpget (url), respuesta -Handler);
log.info ("Respuesta de retorno ====== Start ====================);
log.info (respuesta);
log.info ("Respuesta de retorno ===== end ======================);
Respuesta de retorno;
}
}