java微信主动推送消息,java微信主动推送消息怎么实现?怎么去实现java微信主动推送消息呢?以下是小编整理的方法,希望对有需要的网友们有帮助。
1.拉取access_token
2.拉取用户信息
3.主动推送消息
4.接口貌似要申请权限
5.依赖httpclient4.2.3 和jackson 2.2.1
以下是代码
public class WeixinAPIHelper {
/**
* 获取token接口
*/
private String getTokenUrl =
"https://api./cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
/**
* 拉微信用户信息接口
*/
private String getUserInfoUrl =
"https://api./cgi-bin/user/info?access_token={0}&openid={1}";
/**
* 主动推送信息接口
*/
private String sendMsgUrl =
"https://api./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 初始化创建 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(X509Certificate[] arg0, String arg1) throws
CertificateException {
}
public void checkServerTrusted(X509Certificate[] 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 获取授权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 推送信息
* @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.execute(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 拉取用户信息
* @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 发起HTTP GET请求返回数据
* @param url
* @return
* @throws IOException
* @throws ClientProtocolException
*/
private String executeHttpGet(String url) throws IOException,
ClientProtocolException {
ResponseHandler responseHandler = new BasicResponseHandler();
String response = (String) this.webClient.execute(new HttpGet(url),
responseHandler);
log.info("return response=====start======");
log.info(response);
log.info("return response=====end======");
return response;
}
}
以上是小编整理的java微信主动推送消息的内容,希望对您有帮助,如果您想了解更多微信素材,请多多关注微素达网。
相关推荐:
如果觉得《java 微信主动推送消息_java微信主动推送消息 java微信主动推送消息怎么实现?》对你有帮助,请点赞、收藏,并留下你的观点哦!