1. Tarik akses_token
2. Tarik informasi pengguna
3. Secara aktif mendorong pesan
4. Antarmuka tampaknya memerlukan izin
5. Mengandalkan httpclient4.2.3 dan Jackson 2.2.1
Salinan kode adalah sebagai berikut:
kelas publik weixinapihelper {
/**
* Dapatkan antarmuka token
*/
Private String getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=king={0}&secret=kret= /1}";
/**
* Tarik Antarmuka Informasi Pengguna WeChat
*/
string private getUserInfourl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ken&openid=king=k
/**
* Antarmuka Informasi Dorong Aktif
*/
Private String sendMSgUrl = "https://api.weixin.qq.com/cgi-bin/message/send?access_token=k
WebClient httpclient pribadi;
log private log = logfactory.getLog (getClass ());
public void initwebclient (string proxyhost, int proxyport) {
this.InitWebClient ();
if (webclient! = null &&! stringutils.isempty (proxyhost)) {
Httphost proxy = httphost baru (proxyhost, proxyport);
webclient.getParams (). setParameter (connroutePnames.default_proxy, proxy);
}
}
/**
* @desc menginisialisasi pembuatan WebClient
*/
public void initwebclient () {
log.info ("initwebclient start ....");
mencoba {
PoolingClientConnectionManager TCM = PoolingClientConnectionManager baru ();
tcm.setmaxtotal (10);
Sslcontext ctx = sslcontext.getInstance ("tls");
X509TrustManager TM = X509TrustManager baru () {
public void checkClientTrusted (x509certificate [] arg0, string arg1) melempar sertifikatException {
}
public void checkservertrusted (x509certificate [] arg0, string arg1) melempar sertifikatException {
}
publik x509certificate [] getacceptedissuers () {
kembali nol;
}
};
ctx.init (null, X509TrustManager baru [] {tm}, null);
Sslsocketfactory ssf = sslsocketfactory baru (ctx, sslsocketfactory.allow_all_hostname_verifier);
Skema sch = skema baru ("https", 443, ssf);
tcm.getschemeregistry (). Register (sch);
WebClient = DEFAULTHTTPCLIENT baru (TCM);
} catch (Exception ex) {
Log.Error ("InitWebClient Exception", Ex);
} Akhirnya {
log.info ("initwebclient end ...");
}
}
/**
* @desc dapatkan token resmi
* @param appid
* @param Secret
* @kembali
*/
String publik getAccessToken (string appId, string secret) {
String accessToken = null;
mencoba {
log.info ("GetAccessToken start. {appId =" + appId + ", Secret:" + Secret + "}");
String url = messageFormat.format (this.gettokenurl, appid, rahasia);
String response = executeHttpget (url);
AccessToken = jsonutils.read (respons, "access_token");
} catch (Exception e) {
Log.Error ("Dapatkan Access Toekn Exception", e);
}
kembali AccessToken;
}
/**
* @desc informasi dorong
* @param token
* @param msg
* @kembali
*/
public string sendMessage (token string, string msg) {
mencoba{
log.info ("sendmessage start.token:"+token+", msg:"+msg);
String url = messageFormat.format (this.sendmsgurl, token);
Httppost post = httpppost baru (url);
ResponseHandler <?> ResponseHandler = BasicResponseHandler baru ();
Entity StringEntity = StringEntity baru (msg);
post.setentity (entitas);
String response = (string) this.webclient.execute (post, responseHandler);
log.info ("Return Response ====== Mulai ======================);
log.info (respons);
log.info ("Return response ===== end =======================);
respons pengembalian;
} catch (Exception e) {
Log.Error ("Dapatkan Pengecualian Info Pengguna", E);
kembali nol;
}
}
/**
* @desc menarik informasi pengguna
* @param token
* @param openId
* @kembali
*/
public weixinopenuser getUserInfo (string token, string openId) {
mencoba {
log.info ("getUserInfo start. {token:" + token + ", openId:" + openId + "}");
String url = messageFormat.format (this.getUserInfourl, token, openId);
String response = executeHttpget (url);
JSonnode json = jsonutils.read (respons);
if (json.get ("openId")! = null) {
Weixinopenuser user = weixinopenuser baru ();
user.setopenuserid (json.get ("openId"). astext ());
user.setState (json.get ("berlangganan"). 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 ("bahasa"). asText ());
}
Pengguna Kembali;
}
} catch (Exception e) {
Log.Error ("Dapatkan Pengecualian Info Pengguna", E);
}
kembali nol;
}
/**
* @desc memulai permintaan http mendapatkan untuk mengembalikan data
* URL @param
* @kembali
* @Throws IoException
* @Throws ClientProtocolException
*/
Private String ExecuteHTPGet (String URL) melempar IoException, ClientProtocolException {
ResponseHandler <?> ResponseHandler = BasicResponseHandler baru ();
String response = (string) this.webclient.execute (httpget baru (url), responseHandler);
log.info ("Return Response ====== Mulai ======================);
log.info (respons);
log.info ("Return response ===== end =======================);
respons pengembalian;
}
}