背景:
还是那个业务背景,面向微信公众号开发,指定针对用户发送消息,胖友们,我研究了一天了,代码粘过去,用不了你锤死我
1、pom.xml文件中添加依赖
org.projectlombok
lombok
org.wso2.apache.httpcomponents
httpmime
4.3.1.wso2v1
org.wso2.apache.httpcomponents
httpclient
4.3.1.wso2v1
top.jfunc.json
json-fastjson
1.8.3
DataEntity.java
@Getter
@Setterpublic classDataEntity {//内容
privateString value;//字体颜色
privateString color;publicDataEntity(String value ,String color){this.value =value;this.color =color;
}
实现类: 有“XXX”的地方需要修改,其他地方可以不用动
WechatMsg.java
@Componentpublic classWechatMsg {public static voidmain(String[] args) {
WechatMsg wm= newWechatMsg();
wm.SendWeChatMsg(wm.getToken());
}/*** 获取token
*
*@returntoken*/
publicString getToken() {//授予形式
String grant_type = "client_credential";//应用ID
String appid = "XXXXXXXXXXXXXXXXXXX";//密钥
String secret = "XXXXXXXXXXXXXXXXXXXXXXXXXX";//接口地址拼接参数
String getTokenApi = "https://api./cgi-bin/token?grant_type=" + grant_type + "&appid=" +appid+ "&secret=" +secret;
String tokenJsonStr= doGetPost(getTokenApi, "GET", null);
JSONObject tokenJson=JSONObject.parseObject(tokenJsonStr);
String token= tokenJson.get("access_token").toString();
System.out.println("获取到的TOKEN : " +token);returntoken;
}/***
* 发送消息
*
*@paramtoken*/
public voidSendWeChatMsg(String token) {//接口地址
String sendMsgApi = "https://api./cgi-bin/message/template/send?access_token="+token;//openId
String toUser = "XXXXXXXXXXXXXX";//消息模板ID
String template_id = "XXXXXXXXXXXXXXXXXXXXXX";//整体参数map
Map paramMap = new HashMap();//消息主题显示相关map
Map dataMap = new HashMap();//根据自己的模板定义内容和颜色
dataMap.put("first",new DataEntity("详细内容XXXXXXX","#173177"));
dataMap.put("keyword1",new DataEntity("私有化部署XXX","#173177"));
dataMap.put("keyword2",new DataEntity("-08-18XXX" ,"#173177"));
dataMap.put("remark",new DataEntity("申请成功XXX","#173177"));
paramMap.put("touser", toUser);
paramMap.put("template_id", template_id);
paramMap.put("data", dataMap);
System.out.println(doGetPost(sendMsgApi,"POST",paramMap));
}/*** 调用接口 post
*@paramapiPath*/
public String doGetPost(String apiPath,String type,MapparamMap){
OutputStreamWriter out= null;
InputStream is= null;
String result= null;try{
URL url= new URL(apiPath);//创建连接
HttpURLConnection connection =(HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod(type) ;//设置请求方式
connection.setRequestProperty("Accept", "application/json"); //设置接收数据的格式
connection.setRequestProperty("Content-Type", "application/json"); //设置发送数据的格式
connection.connect();if(type.equals("POST")){
out= new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); //utf-8编码
out.append(JSON.toJSONString(paramMap));
out.flush();
out.close();
}//读取响应
is =connection.getInputStream();int length = (int) connection.getContentLength();//获取长度
if (length != -1) {byte[] data = new byte[length];byte[] temp = new byte[512];int readLen = 0;int destPos = 0;while ((readLen = is.read(temp)) > 0) {
System.arraycopy(temp,0, data, destPos, readLen);
destPos+=readLen;
}
result= new String(data, "UTF-8"); //utf-8编码
}
}catch(IOException e) {
e.printStackTrace();
}finally{try{
is.close();
}catch(IOException e) {
e.printStackTrace();
}
}returnresult;
}
}
效果图
附微信接口文档:https://developers./doc/offiaccount/Message_Management/Template_Message_Interface.html