向微信公众号发送么个特地消息给么个人

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_idjo.put("url", ""); //这个是消息链接,一般发动态链接。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;}}

路灯和我之间,究竟谁是谁的过客,

向微信公众号发送么个特地消息给么个人

相关文章:

你感兴趣的文章:

标签云: