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

时间: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
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!