1。Access_Tokenをプルします
2。ユーザー情報を引きます
3.メッセージを積極的にプッシュします
4.インターフェイスには許可が必要なようです
5。HTTPCLIENT4.2.3およびJACKSON 2.2.1に依存しています
コードコピーは次のとおりです。
パブリッククラスweixinapihelper {
/**
*トークンインターフェイスを取得します
*/
private string getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid= {0}&secret = {1}";
/**
* WeChatユーザー情報インターフェイスを引き出します
*/
private string getUserInfourl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token = {0}&openid= {1}";
/**
*アクティブプッシュ情報インターフェイス
*/
private string sendmsgurl = "https://api.weixin.qq.com/cgi-bin/message/send?access_token= {0}";
プライベートhttpclient webclient;
プライベートログ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 = new PoolingClientConnectionManager();
tcm.setmaxtotal(10);
sslcontext ctx = sslcontext.getInstance( "tls");
X509TrustManager TM = new X509TrustManager(){
public void checkClientTrusted(x509Certificate [] arg0、string arg1)はcermostexceptionをスローします{
}
public void checkServerTrusted(x509Certificate [] arg0、string arg1)Sthrows cermogtexception {
}
public x509certificate [] getCicteDissuers(){
nullを返します。
}
};
ctx.init(null、new x509trustmanager [] {tm}、null);
SSLSocketFactory SSF = new SSLSocketFactory(CTX、SSLSocketFactory.Allow_all_hostname_verifier);
スキームsch = new Scheme( "HTTPS"、443、SSF);
tcm.getschemeregistry()。レジスタ(sch);
webclient = new defaulthttpclient(tcm);
} catch(例外Ex){
log.error( "initwebclient例外"、ex);
} ついに {
log.info( "initwebclient end ...");
}
}
/**
* @desc認定トークンを取得します
* @param appid
* @Param Secret
* @戻る
*/
public string getAccestoken(String Appid、String Secret){
文字列AccessToken = null;
試す {
log.info( "getaccestoken start。{appid =" + appid + "、secret:" + secret + "}");
string url = messageformat.format(this.gettokenurl、appid、secret);
文字列応答= executehttpget(url);
AccessToken = jsonutils.read(respons、 "Access_token");
} catch(例外e){
log.Error( "アクセスTOEKN例外を取得"、e);
}
AccessTokenを返します。
}
/**
* @descプッシュ情報
* @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 Basic ResponseHandler();
Stringentity Entity = new Stringentity(MSG);
post.setEntity(エンティティ);
文字列応答=(string)this.webclient.execute(post、responsehandler);
log.info( "return response ====== start ==================
log.info(response);
log.info( "return response ===== end ==================
返信応答。
} catch(例外e){
log.error( "ユーザー情報の例外を取得"、e);
nullを返します。
}
}
/**
* @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);
文字列応答= 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( "言語")。astext());
}
ユーザーを返します。
}
} catch(例外e){
log.error( "ユーザー情報の例外を取得"、e);
}
nullを返します。
}
/**
* @DESCは、データを返すためのHTTP GETリクエストを開始します
* @param url
* @戻る
* @throws ioexception
* @Throws ClientProtoColexception
*/
private string executehttpget(string url)はioexception、clientProtoColexceptionをスローします{
ResponseHandler <?> ResponseHandler = new Basic ResponseHandler();
文字列応答=(string)this.webclient.execute(new httpget(url)、responshandler);
log.info( "return response ====== start ==================
log.info(response);
log.info( "return response ===== end ==================
返信応答。
}
}