项目场景:用户扫码(带场景值)关注后推送一段文字再加上一张图片(待判定);
图片来源:读取项目下的图片
工具:WxMpService-----这是一个好东西 调用微信接口有他就不愁
导入方式 maven下
<dependency>
<groupId>me.chanjar</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>1.3.3</version>
</dependency>
推送事件
首先。调用客服接口发送文字,其次调用方法发送图片
private WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage, WxMpService weixinService) throws Exception {
String text = "";
try {
text = "****************" ;
weixinService.getKefuService().sendKefuMessage(WxMpKefuMessage.TEXT().toUser(wxMessage.getFromUser()).content
(text).build());
} catch (Exception e) {
this.logger.error(e.getMessage(), e);
}
// 调用发送图片 方法
return returenImage(wxMessage, weixinService);
}
图片发送方法
读取项目下文件,为了打包成jar包后能够继续使用,因此不能使用Flie类,只能读取成流
其中微信接口中
type 是 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
media 是 文件的后缀 如下".jpg"
下面逻辑当然是乱写的 但是上传和发送的方法是对的
private WxMpXmlOutMessage returenImage(WxMpXmlMessage wxMessage, WxMpService weixinService) {
InputStream logo = this.getClass().getClassLoader().getResourceAsStream("static/images/test.jpg");
try {
result = wxMpService.getMaterialService().mediaUpload(WxConsts.MaterialType.IMAGE,
".jpg", logo);
} catch (WxErrorException e) {
this.logger.error("上传错误:" + e.getMessage(), e);
e.printStackTrace();
}
return new ImageBuilder().build(result.getMediaId(), wxMessage, weixinService);
}
上面是获取jar包中的素材 有时候我们需要获取网络的素材就可以这样做
private WxMpXmlOutMessage returenImage(WxMpXmlMessage wxMessage, WxMpService weixinService) {
URL url = null;
HttpURLConnection conn = null;
InputStream inStream = null;
WxMediaUploadResult result = null;
try {
//new一个URL对象
url = new URL("http://qiniu-public.***********/029502df3963467b601e2bcc7698161.jpg");
//打开链接
conn = (HttpURLConnection) url.openConnection();
//设置请求方式为"GET"
conn.setRequestMethod("GET");
//超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
//通过输入流获取图片数据
inStream = conn.getInputStream();
result = wxMpService.getMaterialService().mediaUpload(WxConsts.MaterialType.IMAGE, ".jpg", inStream);
} catch (IOException e) {
this.logger.error("获取错误:" + e.getMessage(), e);
e.printStackTrace();
} catch (WxErrorException e) {
this.logger.error("上传错误:" + e.getMessage(), e);
e.printStackTrace();
}
return result != null ? (new ImageBuilder().build(result.getMediaId(), wxMessage, weixinService)) : null;
}
PS:如有不懂,可以留言评论或者私信告知,如果感觉帮到你了,麻烦点个赞,你的鼓励是我最大的动力。