向微信公众号发送么个特地消息给么个人
时间:2015-02-28 20:21:09
收藏:0
阅读:310
package com.YY.tuling; import java.io.UnsupportedEncodingException; import net.sf.json.JSONArray; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.liufeng.course.pojo.Token; import com.YY.Entity.ReceiveXmlEntity; import com.YY.util.CommonUtil; import com.YY.util.FormatXmlResult; public class HttpGetRequest { /** * Post 请求 * @param url 请求地址 * @param Param 请求内容 * @return 接口返回的内容 */ private static String post(String url ,String param){ try{ HttpPost request = new HttpPost(url); request.setEntity(new StringEntity(param,"UTF-8")); HttpResponse response = HttpClients.createDefault().execute(request); //根据返回结果判断请求是否成功 if(200 == response.getStatusLine().getStatusCode()){ return EntityUtils.toString(response.getEntity()); } return ""; }catch(Exception e){e.printStackTrace();return "";} } public static String getExction() throws Exception{ // 第三方用户唯一凭证 String appId = "APPID"; // 第三方用户唯一凭证密钥 String appSecret = "APPSECRET"; // 调用接口获取凭证 Token token = CommonUtil.getToken(appId, appSecret); String param =FormatXmlResult.getJsonResult(); String Url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token.getAccessToken(); String result = post(Url,param); System.out.println(result); return result; } } <pre name="code" class="java">package com.YY.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import com.YY.Entity.ReceiveXmlEntity; /** * Json * @author Administrator * */ public class FormatXmlResult { public static String getJsonResult() throws UnsupportedEncodingException{ // JSON格式数据解析对象 JSONObject jo = new JSONObject(); jo.put("touser", "消息接受者的OPendID"); jo.put("template_id", "gCC5EseXsJXrLC-mOzUc9EFE3ehSH0hAApMLyWii-io"); 每一个微信公众号都有的template_id jo.put("url", "http://www.sina.com.cn"); //这个是消息链接,一般发动态链接。 jo.put("topcolor", "#7B68EE"); JSONObject map11 = new JSONObject(); map11.put("value", "以下单据需要审批!"); map11.put("color", "#173177"); JSONObject map12 = new JSONObject(); map12.put("value", "A1"); map12.put("color", "#173177"); JSONObject map13 = new JSONObject(); map13.put("value", "B2"); map13.put("color", "#173177"); JSONObject map14 = new JSONObject(); map14.put("value", "C3"); map14.put("color", "#173177"); JSONObject map15 = new JSONObject(); map15.put("value", "请尽快审"); map15.put("color", "#173177"); Employee employee = new Employee(); employee.setFirst(map11); employee.setKeynote1(map12); employee.setKeynote2(map13); employee.setKeynote3(map14); employee.setRemark(map15); jo.put("data", employee); return jo.toString(); } }
package com.YY.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.ConnectException; import java.net.URL; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import net.sf.json.JSONException; import net.sf.json.JSONObject; import org.liufeng.course.pojo.Token; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 通用工具类 * * @author liufeng * @date 2013-10-17 */ public class CommonUtil { private static Logger log = LoggerFactory.getLogger(CommonUtil.class); // 凭证获取(GET) public final static String token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; /** * 发送https请求 * * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */ public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = null; try { // 创建SSLContext对象,并使用我们指定的信任管理器初始化 TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // 从上述SSLContext对象中得到SSLSocketFactory对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); URL url = new URL(requestUrl); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setSSLSocketFactory(ssf); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); // 设置请求方式(GET/POST) conn.setRequestMethod(requestMethod); // 当outputStr不为null时向输出流写数据 if (null != outputStr) { OutputStream outputStream = conn.getOutputStream(); // 注意编码格式 outputStream.write(outputStr.getBytes("UTF-8")); outputStream.close(); } // 从输入流读取返回内容 InputStream inputStream = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; StringBuffer buffer = new StringBuffer(); while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } // 释放资源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); inputStream = null; conn.disconnect(); jsonObject = JSONObject.fromObject(buffer.toString()); } catch (ConnectException ce) { log.error("连接超时:{}", ce); } catch (Exception e) { log.error("https请求异常:{}", e); } return jsonObject; } /** * 获取接口访问凭证 * * @param appid 凭证 * @param appsecret 密钥 * @return */ public static Token getToken(String appid, String appsecret) { Token token = null; String requestUrl = token_url.replace("APPID", appid).replace("APPSECRET", appsecret); // 发起GET请求获取凭证 JSONObject jsonObject = httpsRequest(requestUrl, "GET", null); if (null != jsonObject) { try { token = new Token(); token.setAccessToken(jsonObject.getString("access_token")); token.setExpiresIn(jsonObject.getInt("expires_in")); } catch (JSONException e) { token = null; // 获取token失败 log.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg")); } } return token; } /** * URL编码(utf-8) * * @param source * @return */ public static String urlEncodeUTF8(String source) { String result = source; try { result = java.net.URLEncoder.encode(source, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; } /** * 根据内容类型判断文件扩展名 * * @param contentType 内容类型 * @return */ public static String getFileExt(String contentType) { String fileExt = ""; if ("image/jpeg".equals(contentType)) fileExt = ".jpg"; else if ("audio/mpeg".equals(contentType)) fileExt = ".mp3"; else if ("audio/amr".equals(contentType)) fileExt = ".amr"; else if ("video/mp4".equals(contentType)) fileExt = ".mp4"; else if ("video/mpeg4".equals(contentType)) fileExt = ".mp4"; return fileExt; } }
package com.YY.util; import java.util.Map; import net.sf.json.JSONObject; public class Employee { private JSONObject first; private JSONObject keynote1; private JSONObject keynote2; private JSONObject keynote3; private JSONObject remark; public JSONObject getFirst() { return first; } public void setFirst(JSONObject first) { this.first = first; } public JSONObject getKeynote1() { return keynote1; } public void setKeynote1(JSONObject keynote1) { this.keynote1 = keynote1; } public JSONObject getKeynote2() { return keynote2; } public void setKeynote2(JSONObject keynote2) { this.keynote2 = keynote2; } public JSONObject getKeynote3() { return keynote3; } public void setKeynote3(JSONObject keynote3) { this.keynote3 = keynote3; } public JSONObject getRemark() { return remark; } public void setRemark(JSONObject remark) { this.remark = remark; } }
package org.liufeng.course.util; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.X509TrustManager; /** * 信任管理器 * * @author liufeng * @date 2013-04-10 */ public class MyX509TrustManager implements X509TrustManager { // 检查客户端证书 public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } // 检查服务器端证书 public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } // 返回受信任的X509证书数组 public X509Certificate[] getAcceptedIssuers() { return null; } }
package org.liufeng.course.pojo; /** * 凭证 * * @author liufeng * @date 2013-10-17 */ public class Token { // 接口访问凭证 private String accessToken; // 凭证有效期,单位:秒 private int expiresIn; public String getAccessToken() { return accessToken; } public void setAccessToken(String accessToken) { this.accessToken = accessToken; } public int getExpiresIn() { return expiresIn; } public void setExpiresIn(int expiresIn) { this.expiresIn = expiresIn; } }
评论(0)