前言:最近做微信开发,弄了一个群发接口,本着不记录肯定会忘记的本事,在这里整理一下。多学习多进步。本文比较啰嗦,可以查看参考文章,我就是从那位大神那里学习到的。本片文章基于Spring开发,Spring提供的用于访问Rest服务的客户端。
这篇文章解决的问题:
1.上传图文消息素材
2.根据openid列表群发
官方技术文档:微信公众平台技术文档
一、查看相关技术文档,确定自己业务需求
我想说明一下这里,因为本人是技术菜鸟,学习的时候查看文档,发现会多都是直接把代码一粘贴一复制就算OK,以前我也是这样,后来自己再去用的时候发现根本看不懂了,所以以后整理每一篇博客我都会很上心,把一些自己注意到的细节问题写出了方便自己以后的使用。
1:查看微信公众平台的技术文档
(1)发送消息-群发接口
群发消息,我们首先要上传消息,再群发。按照目录的第一点是上传图文消息内的图片获取URL,但是第二点上传图文消息素材。我们查看上传图文消息素材接口会发现,我们上传资源的参数是thumb_media_id。如图:
而上传图文消息内的图片获取URL返回的是url,如图:
所以我们这里要使用素材管理接口
这里有两种素材,一种是临时素材,一种是永久素材,区别自己查看接口就能知道,这里讲解上传临时素材,毕竟永久素材上传是有个数的。
调用临时素材接口就可以返回media_id,就是我们上传图文消息素材需要的thumb_media_id参数数据了。
现在开始正式java接口开发。
二、获取access_token
参考柳峰文章:
微信公众平台开发教程第22篇-如何保证access_token长期有效
三、新增临时素材
1:接口调用请求说明
(1)请参参数
(2)java接口开发
public final class MediaType {
public static final String APPLICATION_XML = "application/xml;charset=UTF-8";
public static final String APPLICATION_JSON = "application/json;charset=UTF-8";
public static final String APPLICATION_X_WWW_F_U = "application/x-www-form-urlencoded;charset=UTF-8";
}
GroupSendMessageApi接口
package com.weixin.message.api;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import com.basic.protocol.MediaType;
import com.weixin.message.model.Articles;
import com.weixin.message.model.FilePathData;
import com.weixin.message.model.GroupSendResponse;
import com.weixin.message.model.MessageData;
import com.weixin.message.model.UploadResponse;
/**
* 接口名:群发消息接口
* 创建时间:2017-05-26
* 开发者: wangql
*/
@Path("/groupSendMessage")
public interface GroupSendMessageApi {
/**
* 上传临时素材
* @param filePath
* @return
*/
@POST
@Path("/uploadMatter")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON })
public UploadResponse fileUpload(FilePathData filePath);
}
FilePathData请求数据
package com.weixin.message.model;
public class FilePathData {
private String filePath;//文件路径
private String type;//文件类型 默认image
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
GroupSendMessageApiImp