发送视频消息
上传一段小视频,获取media_id,上传的视频不大于10MB,支持MP4格式, 当用户发送视频格式时,公众号就回复视频格式
1.获取media_id
package com.qj.servlet;
import com.alibaba.fastjson.JSONObject;
import com.qj.util.UploadMediaApiUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
*/
@WebServlet(name = "UploadMediaServlet")
public class UploadMediaServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UploadMediaApiUtil uploadMediaApiUtil = new UploadMediaApiUtil();
String appId = "wx8948d77934e934e0";
String appSecret = "d4babf8b4bc341167b283e21e129e073";
String accessToken = uploadMediaApiUtil.getAccessToken(appId,appSecret);
String filePath = "D:\\1.mp4";
File file = new File(filePath);
String type = "VIDEO";
JSONObject jsonObject = uploadMediaApiUtil.uploadMedia(file,accessToken,type);
System.out.println(jsonObject.toString());
}
}
2.启动项目,访问http://localhost:8080/UploadMediaServlet,进行上传视频
微信服务器会返回一个media_id:
{"media_id":"h_Z1TXk5iektoi2BdlG-sRZg_6nH750IhwUheGVBjpJn8_gEqJOhsWRWnRsbZbSh","created_at":1569496025,"type":"video"}
代码实现
1.在Message.util工具类中新增 buildVideoMessage方法
/**
* 回复视频消息
* @param map
* @return
*/
private static String buildVideoMessage(Map<String, String> map) {
String fromUserName = map.get("FromUserName");
String toUserName = map.get("ToUserName");
String title = "客官发过来的视频哟~~";
String description = "客官您呐,现在肯定很开心,对不啦 嘻嘻?";
/*返回用户发过来的视频*/
//String media_id = map.get("MediaId");
String media_id = "h_Z1TXk5iektoi2BdlG-sRZg_6nH750IhwUheGVBjpJn8_gEqJOhsWRWnRsbZbSh";
return String.format(
"<xml>" +
"<ToUserName><![CDATA[%s]]></ToUserName>" +
"<FromUserName><![CDATA[%s]]></FromUserName>" +
"<CreateTime>%s</CreateTime>" +
"<MsgType><![CDATA[video]]></MsgType>" +
"<Video>" +
" <MediaId><![CDATA[%s]]></MediaId>" +
" <Title><![CDATA[%s]]></Title>" +
" <Description><![CDATA[%s]]></Description>" +
"</Video>" +
"</xml>",
fromUserName,toUserName, getUtcTime(),media_id,title,description
);
}
2. 在 buildXml 构建消息的方法中新增代码
//返回用户发过来的视频
if(msgType.toUpperCase().equals("VIDEO")){
String fromUserName = map.get("FromUserName");
String toUserName = map.get("ToUserName");
String title = "客官发过来的视频哟~~";
String description = "客官您呐,现在肯定很开心,对不啦 嘻嘻?";
/*返回用户发过来的视频*/
//String media_id = map.get("MediaId");
String media_id = "h_Z1TXk5iektoi2BdlG-sRZg_6nH750IhwUheGVBjpJn8_gEqJOhsWRWnRsbZbSh";
return String.format(
"<xml>" +
"<ToUserName><![CDATA[%s]]></ToUserName>" +
"<FromUserName><![CDATA[%s]]></FromUserName>" +
"<CreateTime>%s</CreateTime>" +
"<MsgType><![CDATA[video]]></MsgType>" +
"<Video>" +
" <MediaId><![CDATA[%s]]></MediaId>" +
" <Title><![CDATA[%s]]></Title>" +
" <Description><![CDATA[%s]]></Description>" +
"</Video>" +
"</xml>",
fromUserName,toUserName, getUtcTime(),media_id,title,description
);
}
3.启动项目,测试效果,用户发送视频,客户端会返回一段视频