Java микро-общественный канал платформа для развития материального управления (весна загрузка 2.X)

Микро-канал насыпного управление материальное и этот документ очень дружелюбный Java. Эта статья предназначена только для нового временного материала, новый материал, изготовленный постоянное введение, остальное ГЭТ, удалять, изменять, дополнять свои собственные

Ни один общественный часто не нужно использовать некоторые временные сцены мультимедийные материалы, например , в использовании интерфейса , в частности, чтобы отправить сообщение, работу мультимедийных файлов, доступа и мультимедийных вызовов сообщений и т.д., осуществляется media_id. Материал интерфейс управления для всех сертифицированных номер подписки и номер службы открытым.

Ограничения клип

Фотографии (изображение): 2M, поддержка формата PNG \ JPEG \ JPG \ GIF
Voice (голос): 2M, игроки больше не чем 60, не поддерживает AMR \ MP3 формат
видео (видео): 10MB, поддержка формата MP4
миниатюр (большой палец): 64KB, поддержка формата JPG

Во-первых, новый временный материал

Интерфейс: https: //api.weixin.qq.com/cgi-bin/media/upload access_token = access_token и типа = TYPE, повторная передача типов медиа-файлы, может быть картинка (изображение), голос (голос), видео (видео? ) и уменьшенных изображений (палец).

1, номер подписки и номер службы быть заверены
2, media_id временный материал многоразового использования
3, медиа - файлы , хранящиеся в микро время письмо за кулисы 3 дня или 3 дня media_id недостаточность.

/ ** 
     * Добавлен временный материал (местный) 
     * 
     * @param маркер доступа 
     * @param типа типов медиа - файлов, соответственно изображения (изображения), голос (голос), (видео) и уменьшенных изображений (Thumb) 
     * @param Filepath местный путь 
     * @return 
     * / 
    @Override 
    общественного MaterialResult uploadTempMediaFile (маркер доступа String, тип String, String Filepath) { 
        карте <String, String> в PARAMS = новый новый HashMap <> (); 
        params.put ( далее "access_token", маркер доступа); 
        в PARAMS. PUT ( "тип", тип); 
        Попробовать { 
            Строка Результат = MaterialUtil.uploadMediaFile (wechatMaterialConfig.getUploadTempMediaUrl (), в PARAMS, Filepath); 
            возвращение JsonUtil.fromJson (Result, MaterialResult.class);
        Загвоздка} (Exception E) {  
            log.error (Е.GetMessage ());
        } 
        возвращение нуль; 
    } 
 
    / ** 
     * новый временный материал (сеть) 
     * 
     * @param маркер доступ 
     * типы @param типа медиа - файлы, соответственно, изображения (изображения), речи (голос), (видео ) и уменьшенных изображений (Thumb) 
     * @param сетевой путь URL 
     * @return 
     * / 
    @Override 
    общественного MaterialResult uploadTempMediaUrl (маркер доступа строк, типа String, URL String) { 
        карте <String, String> в PARAMS = новый новый HashMap <> (); 
        в PARAMS .Put ( далее "access_token", маркер доступа); 
        params.put ( "тип", тип); 
        попробовать {
            Результат String = MaterialUtil.uploadMediaUrl (wechatMaterialConfig.getUploadTempMediaUrl (), Params, URL); 
            Возвращение JsonUtil.fromJson (результат, MaterialResult.class); 
        } Задвижка (Исключение е) {
            log.error (e.getMessage ()); 
        } 
        Возвращать нуль; 
    }

Во-вторых, новый постоянный материал

Интерфейс: HTTPS :? //Api.weixin.qq.com/cgi-bin/material/add_material access_token = access_token и тип = TYPE, типы медиафайлов, соответственно изображение (изображение), голос (голос), видео (видео, исключение) и уменьшенных изображений (палец)

/ ** 
     * новый постоянный материал (местный) 
     * 
     * @param маркер доступа 
     * @param типа типов медиа - файлов, соответственно изображения (изображения), голос (голос) и уменьшенных изображений (Thumb) 
     * @param Filepath локальный путь 
     * @return 
     * / 
    @Override 
    общественного MaterialResult uploadForeverMediaFile (маркер доступа String, тип String, String Filepath) { 
        карте <String, String> в PARAMS = новый новый HashMap <> (); 
        params.put ( далее "access_token", маркер доступа); 
        params.put ( «тип », тип); 
        попробовать { 
            Строка Результат = MaterialUtil.uploadMediaFile (wechatMaterialConfig.getUploadForeverMediaUrl (), в PARAMS, Filepath); 
            log.error (e.getMessage ()); 
            возвращение JsonUtil.fromJson (Result, MaterialResult.class);
        Загвоздка} (Exception E) { 
        } 
        возвращение нуль; 
    } 
 
 
    / ** 
     * новый постоянный материал (сеть) 
     * 
     * @param маркер доступ 
     * типы @param типа медиа - файлы, соответственно, изображения (изображения), голос (голос) и уменьшенное (Thumb) 
     * @param сетевой путь URL 
     * @return 
     * / 
    @Override 
    общественного MaterialResult uploadForeverMediaUrl (маркер доступа String, тип String, URL String) { 
        карте <String, String> в PARAMS = новый новый HashMap <> (); 
        params.put ( " access_token "маркер доступа); 
        params.put (" тип», тип); 
        попробовать {
            Результат String = MaterialUtil.uploadMediaUrl (wechatMaterialConfig.getUploadForeverMediaUrl (), Params, URL); 
            Возвращение JsonUtil.fromJson (результат, MaterialResult.class); 
        } Задвижка (Исключение е) {
            log.error (e.getMessage ()); 
        } 
        Возвращать нуль; 
    }

Новое видео материал постоянно нуждается в особом внимании к необходимости POST другой формы при загрузке видео клипов, идентификатор для описания, описание содержит информацию о материале названия и введение, формат контент как JSON

/ ** 
     * Загрузить постоянный локальный видео творческий 
     формат * Назад 
     * { 
     * "media_id": media_id 
     *} 
     * 
     * @param маркер доступа 
     * название @param название видеоклипа 
     * @param введение описано видеоматериал 
     * @param Filepath локальный путь 
     * @return 
     * / 
    @Override 
    общественность Строка uploadForeverMediaFile (маркер доступ String, String название Введение String, String Filepath) { 
        // только mp4 из 
        карты <String, String> в Params = нового нового в HashMap <> (); 
        params.put ( " access_token "маркер доступа); 
        params.put (" тип», WechatMaterialConstant.MATERIAL_UPLOAD_TYPE_VIDEO); 
        попробовать {
            Результат = MaterialUtil.uploadVideoMediaFile Строка (wechatMaterialConfig.getUploadForeverMediaUrl (), 
                    в PARAMS, Filepath, название, введение); 
            возвращение JsonUtil.fromJson (Результат, MaterialResult.class) .getMediaId (); 
        } улов (Исключение Е) { 
            log.error (Е .getMessage ()); 
        } 
        возвращение нуль; 
    } 
 
    / ** 
     * Загрузить постоянное сетевое видео творческий 
     формат * Назад 
     * { 
     * "media_id": media_id 
     *} 
     * 
     * @param маркер доступа 
     @param * название название видеоматериала 
     * @param введение описание видеоматериала 
     * @param URL сетевой путь 
     * @return
     * / 
    @Override 
    Строка uploadForeverMediaUrl общественности (String маркер доступа, String заголовок, введение String, String URL) { 
        //只能是的mp4 
        Map <String, String> PARAMS = новый HashMap <> (); 
        params.put ( "access_token", маркер доступа); 
        params.put ( "тип", WechatMaterialConstant.MATERIAL_UPLOAD_TYPE_VIDEO); 
        попробуйте { 
            Строка результата = MaterialUtil.uploadVideoMediaUrl (wechatMaterialConfig.getUploadForeverMediaUrl (), 
                    Титулы, URL, название, введение); 
// log.error (результат); 
            Возвращение JsonUtil.fromJson (результат, MaterialResult.class) .getMediaId (); 
        } Задвижка (Исключение е) {
            log.error (e.getMessage ()); 
        }
        возвращать нуль; 
    }

В-третьих, новый постоянный графический материал

Интерфейс: HTTPS :? //Api.weixin.qq.com/cgi-bin/material/add_news access_token = access_token
 для обычно используемых материалов, разработчики могут загрузить через порт на сервер микро-канал, на постоянной основе .
1, новый постоянный материал изображения после увеличения, с URL возвращается разработчик, разработчик может использовать в имени домена системы Tencent (система доменных имен Tencent внешнего использования, то картина будет замаскирована).
2, количество публичных библиотек материалов Всего ограничен , кроме: графический материал новости, верхний предел 5000 иллюстративного материала, другие типы 1000.
3, содержание конкретных графического сообщения, микро письма за кулисы , чтобы отфильтровать внешние ссылки на изображения, изображения URL - адреса нужно через «Загрузить фотографии в URL поиска графических сообщений» интерфейс для загрузки фотографий , чтобы получить.
4, «загрузить фотографии в URL поиска графических сообщений» интерфейс для загрузки изображений, не принимают 5000 ограниченного количества публичной библиотеки в количестве изображений, фотографии поддерживают только JPG / PNG формата и размер должен быть ниже 1 МБ.
5, графические текстовые сообщения , чтобы поддержать их способность вставить номер счета и другая публика имеет связь массовую статью.

/ ** 
     * Постоянные новые творческие графики 
     * Возвращаясь к примеру 
     * { 
     * "media_id": media_id 
     *} 
     * жить новое творческое графическое сообщение media_id 
     * 
     * @param маркер доступ 
     * @param Entity комбинированных графическое сообщения статьи Данные 
     * @return 
     * @see WechatMassService uploadForMassNewsFile # 
     * / 
    @Override 
    общественного uploadNewsMedia String (Строка маркер доступа, UploadNewsEntity Entity) { 
        карте <String, String> в PARAMS = новый новый HashMap <> (); 
        params.put ( далее "access_token", маркер доступа) ; 
        данные String = JsonUtil.toJson (Entity); 
        Строка Результат = HttpUtil.doPost (wechatMaterialConfig.getAddNewsUrl (), в PARAMS, данные);
        Возвращение JsonUtil.fromJson (результат, MassNewsResult.class) .getMediaId (); 
    }

В-четвертых, картинка в сообщении извлечения URL Загрузить фото 

Интерфейс: https: //api.weixin.qq.com/cgi-bin/media/uploadimg access_token = access_token?

Этот интерфейс для загрузки изображений не занимает 5000 ограниченного количества публичной библиотеки в количестве изображений. Изображения только поддерживает JPG / PNG формат, размер должен быть 1 МБ или менее, этот интерфейс возвращается загрузить URL картинки URL, графические сообщения могут быть помещены в использовании.

  / ** 
     * { 
     * "URL": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ / 0" 
     *} 
     * подробности графического сообщения, микро-канал фильтрации внешних ссылок фонового изображения, изображения URL необходимость «получить URL загруженного графических изображений в пределах сообщений» через интерфейс для загрузки картинок , чтобы получить 
     * получить 
     * 
     * @param маркер доступа 
     * @param Filepath локальный путь 
     * @return 
     * / 
    @Override 
    общественности Строка uploadFileForNewsMedia (маркер доступа String, String Filepath) { 
        карту < String, String> в PARAMS = новый новый HashMap <> (); 
        params.put ( далее "access_token", маркер доступа); 
        попробовать {
            Результат = MaterialUtil.uploadMediaFile Строка (wechatMaterialConfig.getUploadimgMediaUrl (), в PARAMS, Filepath); 
            возвращение JsonUtil.fromJson (Результат, MaterialResult.class) .getUrl (); 
        } улов (Исключение Е) { 
            log.error (e.getMessage () ); 
        } 
        возвращение нуль; 
    } 
 
    / ** 
     * { 
     * "URL": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ / 0" 
     *} 
     * подробности графическое сообщение, фоновый фильтр микро-канал внешние ссылки на изображения, изображения URL - адрес нужно через «загрузить фотографии в графическом сообщении извлечения URL» интерфейс для загрузки картинок , чтобы получить 
     * получить 
     * 
     * @param маркер доступа 
     * @param URL сетевой путь 
     * @return
     * / 
    @Override 
    Строка uploadUrlForNewsMedia общественности (String маркер доступа, String URL) { 
        Map <String, String> PARAMS = новый HashMap <> (); 
        params.put ( "access_token", маркер доступа); 
        попробуйте { 
            Строка результата = MaterialUtil.uploadMediaUrl (wechatMaterialConfig.getUploadimgMediaUrl (), Титулы, URL); 
            Возвращение JsonUtil.fromJson (результат, MaterialResult.class) .getUrl (); 
        } Задвижка (Исключение е) { 
            log.error (e.getMessage ()); 
        } 
        Возвращать нуль; 
    }

Пять, тест Junit

 
@RunWith (SpringJUnit4ClassRunner.class) 
@SpringBootTest (классы = WechatMainApplication.class) 
@ActiveProfiles ( "Dev") 
общественный класс WechatMaterialServiceImplTest { 
 
    @Autowired 
    личного WechatAuthService wechatAuthService; 
 
    @Autowired 
    частный WechatMaterialService wechatMaterialService; 
 
    @Test 
    общественного недействительный uploadTempMediaFile () { 
        Строка Filepath = "C: /Users/Phil/Pictures/cc0a42661f668d17e18d0a0f3a699909.jpeg"; 
        Строка = wechatAuthService.getAccessToken маркер доступа (); 
        System.out.println ( "新增临时本地图片素材,返回" + wechatMaterialService.uploadTempMediaFile (маркер доступа,
                WechatMaterialConstant.MATERIAL_UPLOAD_TYPE_IMAGE, Filepath)); 
        // добавить временный местный материал картины, вернуть MassNewsResult (тип изображения = = rh0D9L_B5Ty_ MediaId-EcwIFULGjb57eCGAbQZRz8bNrWnfcLMiMz2Pm7vIQCdUKzC8C_8, createdAt = 1543648966, URL = NULL) 
    } 
 
    @Test 
    общественного недействительный uploadTempMediaUrl () { 
        URL String = "http://b-ssl.duitang.com/uploads/item/201503/14/20150314212812_kCLmy.jpeg"; 
        строка = маркер доступа wechatAuthService.getAccessToken (); 
        System.out.println ( «новая временная сеть иллюстративного материала, возврат «+ wechatMaterialService.uploadTempMediaUrl (маркер доступа, 
                WechatMaterialConstant.MATERIAL_UPLOAD_TYPE_IMAGE, URL));
        // добавить временный видеоматериал сети, вернуть MassNewsResult (типа = изображений, MediaId = lgbD-K0ltDTmsW2dSxus6sFxqqFc3mU_NiIAOev_U_mU2Yqa6iSv8KPF5e5WE7yC, createdAt = 1543648973, URL = NULL) 
    } 
 
    @test 
    общественных недействительный uploadForeverMediaFile () { 
        Строка Filepath = «C: / Пользователи / Phil / фотографии / cc0a42661f668d17e18d0a0f3a699909.jpeg "; 
        строка = маркер доступ wechatAuthService.getAccessToken (); 
        System.out.println (" новый постоянный местный иллюстративный материал, возвращение «+ wechatMaterialService.uploadForeverMediaFile (маркер доступ, 
                WechatMaterialConstant.MATERIAL_UPLOAD_TYPE_IMAGE, Filepath));
        // добавить постоянный локальный материал изображения, возвращение MassNewsResult (типа = нуль, MediaId = tbP52CbH1vuCLlyUAt2rlUEZKK230SjWIaB9xablAPw, createdAt = 0, URL = HTTP :? //Mmbiz.qpic.cn/mmbiz_jpg/L8zibbZGicwDyd6CV9JpbEe6T7rjqK2fBibCrZAxEvwDCJKHAgtfUialcnNlcjxTsAmycHSKjrO6KzdDUMeDwhYsIA/0 wx_fmt = JPEG) 
    } 
 
    @Test 
    общественного uploadForeverMediaUrl недействительными () { 
        URL String = "http://www.59xihuan.cn/uploads/allimg/201309/9181378183464-lp.jpg"; 
// URL String = «http://b-ssl.duitang.com/ добавления / Item / 201503/14 / 20150314212812_kCLmy.jpeg "; 
        строка = маркер доступа wechatAuthService.getAccessToken (); 
        System.out.println (" новая постоянная сеть иллюстративного материала, возвращение «+ wechatMaterialService.uploadForeverMediaUrl (маркер доступа,
                WechatMaterialConstant.MATERIAL_UPLOAD_TYPE_IMAGE, URL)); 
        //新增永久网络图片素材,返回MassNewsResult (тип = нуль, MediaId = GG16CzQSj3di2OTScAcNAzmoxg_5_KTyxsJ6uEEBpiM, createdAt = 0, URL = HTTP: //mmbiz.qpic.cn/mmbiz_jpg/3WjFdhSpzNwwEwTpWMU4j8UVddOSDGR2zRuJsQZXaRYnsIB3g4yESBqjxkf1e7ruIWYfUO5FtRWIibaVwt6icOHw/0 wx_fmt = JPEG) 
    } 
 
    @Test 
    общественности uploadNewsMedia недействительными) {( 
        строка = wechatAuthService.getAccessToken маркер доступа (); 
        UploadNewsEntity объект = новый UploadNewsEntity (); 
        UploadNewsEntity.UploadNewsArticle Article1 = новый UploadNewsEntity.UploadNewsArticle (); 
        article1.setThumbMediaId ( "tbP52CbH1vuCLlyUAt2rlWEIB6qGsfypnI01Jwwonjg"); 
        article1.setAuthor ( "Article1");
        article1.setTitle ( "Article1"); 
        article1.setContentSourceUrl ( ""); 
        article1.setContent ( "Article1"); 
        article1.setDigest ( "Article1"); 
        article1.setShowConverPic (1); 
        entity.addArticle (Article1); 
        UploadNewsEntity.UploadNewsArticle = новый Статья 2 UploadNewsEntity.UploadNewsArticle (); 
        article2.setThumbMediaId ( "tbP52CbH1vuCLlyUAt2rlRjbl4sO2dPYqvCLZNwIorg"); 
        article2.setAuthor ( "Статья 2 "); 
        article2.setTitle ( "Статья 2 "); 
        article2.setContentSourceUrl ( ""); 
        article2.setContent ( "Статья 2 "); 
        article2.setDigest ( "Статья 2 ");
        entity.addArticle (Статья 2 ); 
        System.out.println ( "Новый постоянный графический материал, возвращение" + wechatMaterialService.uploadNewsMedia (маркер доступа, Entity)); 
        // добавить постоянный материал графический, возвращает tbP52CbH1vuCLlyUAt2rlVvIMceFKJmY663R_urJAYc 
    } 
 
    @test 
    общественности недействительным uploadFileForNewsMedia () { 
        Строка wechatAuthService.getAccessToken = маркер доступа (); 
        Строка Filepath = "D: \\ Фил проект \\ \\ WeChat Пульт SRC \\ \\ \\ phil_new_wechat веб - приложение главная \\ \\ \\ 00_01.jpeg Image"; 
        System.out.println (wechatMaterialService.uploadFileForNewsMedia (маркер доступа, Filepath)); 
        //http://mmbiz.qpic.cn/mmbiz_jpg/L8zibbZGicwDw6sv1WWkFK1nCUDY9bJrHiaEbJuTS37XbJR3hEiblAkibzjdTHdHKqXb6Ij53CDfNwztRsOwljibEp8A/0 
    } 
 
    @Test
    общественного недействительными uploadUrlForNewsMedia) {( 
        строка = wechatAuthService.getAccessToken маркер доступа (); 
        Строка URL = "http://www.59xihuan.cn//uploads/allimg/20130728/64511374987081-lp.jpg"; 
        System.out.println (wechatMaterialService.uploadUrlForNewsMedia (маркер доступа, URL)); 
        //http://mmbiz.qpic.cn/mmbiz_jpg/L8zibbZGicwDw6sv1WWkFK1nCUDY9bJrHiaQXwtf52SyM4ftxVeuickvh1rDLPMaeE1jDxgpWice9TgJOzYPIRAy8uA/0 
    } 
 
    @Test 
    общественного недействительными uploadForeverVideoMediaFile) {( 
        строка Filepath = «D: / Проект / Phil / WeChat / phil_new_wechat / SRC / главная / веб - приложение / видео / 1539717180390 .mp4" ; 
        Строка = wechatAuthService.getAccessToken маркер доступа ();
        System.out.println ( "Новые постоянные местные видео клипов, возвращение" + wechatMaterialService.uploadForeverMediaFile (маркер доступ, 
                "название", "Тест", Filepath)); 
        // добавить постоянные локальные видеоклипы, возвратный LTwMdsrKszM7M677NJyic GG16CzQSj3di2OTScAcNA 
    } 
 
    @ Тест 
    общественного недействительный uploadForeverVideoMediaUrl () { 
        // URL String = "http://vs6.bdstatic.com/browse_static/v3/common/widget/global/player/newPlayer_e2332cd1.swf"; 
        // новообращенного 
        строка URL = «HTTP: / /xiaozhaozhao.nat300.top/video/1539717180390.mp4 "; 
        Строка wechatAuthService.getAccessToken = маркер доступ (); 
        System.out.println (" новый постоянное сетевое видео материал возвращает «+ wechatMaterialService.uploadForeverMediaUrl (маркер доступ,
                "название", "тест", URL));
        // добавить стойкие сетевой видео материал возвращается GG16CzQSj3di2OTScAcNA6OWJlBHKk8sXSmbgPzxEQo 
    } 
 
    @Test 
    общественного недействительными getTempMaterial () { 
        Строка wechatAuthService.getAccessToken = (маркер доступа); 
        Строка MediaID = "c985PlW3avLd3w9gUclA75geC9PFFozfX6-Jn6s9kRWwV2gu0KHSaBEDJu0Eugno"; 
        System.out.println (wechatMaterialService.getTempMaterial (маркер доступа, MediaId)); 
    } 
 
    @Test 
    общественного недействительными getMaterial () { 
        Строка wechatAuthService.getAccessToken = маркер доступа (); 
// Строка MediaId = "tbP52CbH1vuCLlyUAt2rlUEZKK230SjWIaB9xablAPw", изображение // 
        Строка MediaId = "tbP52CbH1vuCLlyUAt2rlVvIMceFKJmY663R_urJAYc"; // графический
        System.out.println (wechatMaterialService.getMaterial (маркер доступа, MediaID)); 
    } 
 
    @Test 
    общественной недействительный deleteMaterial () { 
        Строка MediaID = "tbP52CbH1vuCLlyUAt2rlYaBvU3BHrs8g0-XxdnNILY"; 
        // tbP52CbH1vuCLlyUAt2rlfnoE7EJNJvPvEv0nFkezsw 
        // tbP52CbH1vuCLlyUAt2rlYUYsAvjhY7UmdgQ_8qnip4 
        Строка = wechatAuthService.getAccessToken маркер доступа (); 
        System.out.println (wechatMaterialService.deleteMaterial (маркер доступа, MediaID)); 
        // ResultState (ERRCODE = 0, ErrMsg = нормально) 
    } 
 
    @Test 
    общественного недействительными geMaterialCount () { 
        Строка = wechatAuthService.getAccessToken маркер доступа ();
        System.out.println (wechatMaterialService.geMaterialCount (маркер доступа)); 
        // MaterialCountResult (voiceCount = 0, VIDEOCOUNT = 5, imageCount = 15, newsCount = 2) 
    } 
}

  

В частности Источник: https://github.com/philjing/my_wechat

рекомендация

отwww.cnblogs.com/phil_jing/p/12077973.html