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;
}
}
向微信公众号发送么个特地消息给么个人