天天看点

微信公众号开发笔记(十)发送视频消息

发送视频消息

上传一段小视频,获取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.启动项目,测试效果,用户发送视频,客户端会返回一段视频

微信公众号开发笔记(十)发送视频消息