Manajemen materi WeChat dan posting massal tidak ramah-java. Artikel ini hanya memperkenalkan bahan sementara baru dan bahan permanen baru, dan menambahkan sisanya dengan mendapatkan, menghapus, dan memodifikasinya.
Sering ada skenario di mana bahan multimedia sementara diperlukan untuk akun resmi. Misalnya, saat menggunakan antarmuka, terutama saat mengirim pesan, operasi seperti mendapatkan dan memanggil file multimedia, pesan multimedia, dilakukan melalui media_id. Antarmuka manajemen material terbuka untuk semua nomor berlangganan bersertifikat dan nomor layanan .
Batasan materi
Gambar: 2M, Mendukung PNG/JPEG/JPG/GIF Format Voice: 2m, Panjang pemutaran tidak melebihi 60s, mendukung AMR/MP3 Format Video (Video): 10MB, Mendukung Format MP4 Thumbnail: 64KB, Mendukung JPG Format JPG
1. Tambahkan bahan sementara
Antarmuka: https://api.weixin.qq.com/cgi-bin/media/upload?access_token=access_token&type=Type, dan kemudian lulus jenis file media, yang dapat berupa gambar (gambar), suara (suara), video (video) dan thumbnail (ibu jari).
1. Akun Langganan dan Layanan harus disertifikasi
2. Materi sementara media_id dapat digunakan kembali
3. File media disimpan di latar belakang WeChat selama 3 hari, yaitu, media_id akan tidak valid setelah 3 hari.
/** * Upload temporary material (local) * * @param accessToken * @param type * Media file types, including image (image), voice (voice), video (video) and thumbnails (thumb) * @param path * Image path * @return */ public static UploadMediasResult uploadTempMediaFile(String accessToken, String type, String path) { UploadMediasResult result = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("type", type); Coba {string json = httpsuploadmediaFile (SystemConfig.post_method, wechatconfig.upload_temp_media_type_url, params, path); hasil = jsonutil.fromjsonstring (json, unggahMediaasResult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } /** * Upload temporary material (network) * * @param accessToken * @param type * Media file types, including image (image), voice (voice), video (video) and thumbnails (thumb) * @param path * Image path * @return */ public static UploadMediasResult uploadTempMedia(String accessToken, String type, String path) { UploadMediasResult result = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("type", type); coba {string json = httpsuploadmedia (SystemConfig.post_method, wechatconfig.upload_temp_media_type_url, params, path, 0, 0); hasil = jsonutil.fromjsonstring (json, unggahMediaasResult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; }2. Tambahkan bahan permanen
Antarmuka: https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=access_token&type=Type, jenis file media, termasuk gambar (gambar), suara (suara), video (video, pengecualian) dan thumbnail (jempol)
/ ** * Unggah materi permanen (lokal) * * @param accessToken * @param type * Jenis file media, termasuk gambar (gambar), suara (suara), video (video) dan thumbnails (thumb) * @return */ public static unggahMediasResult unggah forevediAfile (string accessToken, string type, string Path) {unggah) {string Path) {unggah {string string) Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("type", type); coba {string json = httpsuploadmediaFile (SystemConfig.post_method, wechatconfig.upload_forever_media_type_url, params, path); hasil = jsonutil.fromjsonstring (json, unggahMediaasResult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; } /** * Upload permanent material (network) * * @param accessToken * @param type * Media file types, including image (image), voice (voice), video (video) and thumbnails (thumb) * @return */ public static UploadMediasResult uploadForeverMedia(String accessToken, String type, String path) { UploadMediasResult result = null; Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("type", type); coba {string json = httpsuploadmedia (SystemConfig.post_method, wechatconfig.upload_forever_media_type_url, params, path, 0, 0); hasil = jsonutil.fromjsonstring (json, unggahMediaasResult.class); } catch (Exception e) {E.PrintStackTrace (); } hasil pengembalian; }Perhatian khusus harus diberikan untuk menambahkan materi video permanen. Saat mengunggah materi video, Anda perlu memposting formulir lain, dengan deskripsi ID, termasuk informasi deskripsi dari judul dan pengantar materi, dan format konten adalah JSON.
/ ** * Unggah materi permanen (video) * * @param accessToken * @return */ public static string unggahForevermediaFile (string accessToken, string title, string pengantar, string path) {treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("type", "video"); String MediaD = null; Coba {string json = httpsUploadVideoFile (SystemConfig.post_method, wechatconfig.upload_forever_media_type_url, params, jalur, judul, pengantar); mediaid = jsonutil.fromjsonstring (json, "media_id"); } catch (Exception e) {E.PrintStackTrace (); } return MediaId; } / ** * Unggah materi permanen (video, jaringan) * * @param accessToken * @return * / public static string unggahForevermedia (string accessToken, string title, string pengantar, string path) {treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("type", "video"); String MediaD = null; Coba {string json = httpsuploadvideoMedia (SystemConfig.post_method, wechatconfig.upload_forever_media_type_url, params, jalur, judul, pengantar, 0, 0); mediaid = jsonutil.fromjsonstring (json, "media_id"); } catch (Exception e) {E.PrintStackTrace (); } return MediaId; }3. Tambahkan bahan grafik permanen
Antarmuka: https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=access_token, silakan merujuk ke kelas entitas unggahanNewSmedia untuk informasi posting.
Untuk bahan yang umum digunakan, pengembang dapat mengunggahnya ke server WeChat melalui antarmuka ini dan menggunakannya secara permanen.
1. Setelah bahan gambar permanen ditambahkan, ia akan dikembalikan ke pengembang dengan URL. Pengembang dapat menggunakannya di dalam nama domain Tencent (gunakan di luar nama domain Tencent, dan gambar akan diblokir).
2. Jumlah total bahan yang disimpan dalam akun resmi terbatas pada: Batas atas bahan pesan grafik dan teks dan bahan gambar adalah 5.000, dan jenis lainnya adalah 1.000.
3. Dalam konten spesifik dari pesan grafik dan teks, backend WeChat akan memfilter tautan gambar eksternal, dan URL gambar perlu diunggah melalui antarmuka "Unggah gambar dalam pesan grafik dan teks untuk mendapatkan URL".
4. Gambar yang diunggah pada antarmuka "Unggah dalam pesan teks untuk mendapatkan URL" tidak menempati batas 5.000 gambar di perpustakaan materi akun resmi. Gambar hanya mendukung format JPG/PNG, dan ukurannya harus kurang dari 1MB.
5. Pesan grafis dan teks mendukung kemampuan untuk memasukkan akun Anda sendiri dan akun publik lainnya ke dalam teks utama dan telah memposting tautan ke artikel.
/ ** * Bahan untuk mengunggah pesan grafis dan teks permanen * * @param accessToken * token resmi * @param entitas * objek pesan gambar dan teks * @return */ unggahan statis publik. Treemap <string, string> params = new treemap <> (); params.put ("access_token", accessToken); // Posting parameter yang dikirimkan treemap <string, daftar <uploadNewSmedia>> dataparams = treemap baru <string, daftar <uploadnewsmedia >> (); dataparams.put ("artikel", entitas); String data = jsonutil.toJsonstring (dataparams); String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method, wechatconfig.upload_forever_news_media_url, params, data); hasil = jsonutil.fromjsonstring (json, unggahMediaasResult.class); hasil pengembalian; }4. Unggah gambar dalam pesan teks untuk mendapatkan URL
Antarmuka: https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=access_token
Gambar -gambar yang diunggah pada antarmuka ini tidak menempati batas 5.000 gambar di perpustakaan material akun resmi. Gambar hanya mendukung format JPG/PNG, dan ukurannya harus kurang dari 1MB. URL yang dikembalikan oleh antarmuka ini adalah URL untuk mengunggah gambar, yang dapat ditempatkan dalam pesan teks.
/ ** * Unggah gambar dalam pesan teks untuk mendapatkan URL (lokal) * * @param accessToken * @param path * @return */ public string unggahimgmediafile (string accessToken, string path) {treemap <string, string> params = new TreeMap <> (); params.put ("access_token", accessToken); String url = null; coba {string json = httpsuploadmediaFile (SystemConfig.post_method, wechatconfig.upload_img_media_url, params, path); url = jsonutil.fromjsonstring (json, "url"); } catch (Exception e) {E.PrintStackTrace (); } return url; } / ** * Unggah gambar dalam pesan teks untuk mendapatkan URL (jaringan) * * @param accessToken * @param path * @return * / public static string unggahimgmedia (string accessToken, string path) {treemap <string, string> params = baru treemap <string, string,) (); params.put ("access_token", accessToken); String url = null; coba {string json = httpsuploadmedia (SystemConfig.post_method, wechatconfig.upload_img_media_url, params, path, 0, 0); url = jsonutil.fromjsonstring (json, "url"); } catch (Exception e) {E.PrintStackTrace (); } return url; }V. Beberapa alat
Kelas konfigurasi
string final statis public unggah_img_media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg"; string final statis public unggah_forever_news_media_url = "https://api.weixin.qq.com/cgi-bin/material/add_news"; string final statis public unggah_temp_media_type_url = "https://api.weixin.qq.com/cgi-bin/media/upload"; string final statis public unggah_forever_media_type_url = "https://api.weixin.qq.com/cgi-bin/material/add_material";
Unggah grafis dan teks materi pesan kembali kelas
paket com.phil.wechat.msg.model.media; / *** Hasil dikembalikan dengan mengunggah bahan pesan grafis dan teks* @author Phil* @Date 20 September 2017**/ kelas publik UploadMediaSResult {private string type; // Jenis file media, termasuk gambar (gambar), suara (suara), video (video) dan thumbnail (ibu jari), berapa kali adalah berita, yaitu, string pribadi_id; // file media/pengidentifikasi unik yang diperoleh setelah mengunggah pesan grafis dan teks string pribadi dibuat; // Waktu Unggah File Media}Unggah grafis dan teks materi pesan entitas kelas
paket com.phil.wechat.msg.model.media; impor java.io.serializable; / *** Unggah Pesan Grafis Bahan Entitas Kelas* @Author Phil* @Date 20 September 2017*/ Kelas Publik Unggahnewsmedia mengimplementasikan serializable {private static final long serialversionuid = 6551817058101753854l; Private String thumb_media_id; // media_id dari thumbnail dari pesan grafis dapat memperoleh penulis string pribadi di antarmuka file multimedia dukungan-dukungan dasar; // Penulis pesan grafis Judul String Private String; // judul pesan grafis Private String content_source_url; // Klik tautan untuk membaca konten string pribadi teks asli; // konten halaman pesan grafis mendukung tag html private string digest; // deskripsi pesan grafis private int show_conver_pic; // Apakah itu ditampilkan sebagai penutup 1 berarti ditampilkan sebagai penutup 0 tidak ditampilkan sebagai penutup}Metode unggah
/** * Upload media file (local) * * @param method * Request method GET/POST * @param path * Api path * @param param * Api parameter * @param mediaPath * The path of image/music to be uploaded * @return * @throws Exception */ public static String HttpsUploadMediaFile(String method, String path, Map<String, String> param, String mediaPath) throws Exception { String result = null; Url url = url baru (setParmas (param, path, "")); OutputStream output = null; InputStream datalputStream = null; coba {file file = File baru (MediaPath); if (! file.isfile () ||! file.exists ()) {throw new ioException ("File tidak ada"); } HttpurlConnection con = (httpurlConnection) url.openconnection (); con.setdoInput (true); con.setDoOutput (true); con.setusecaches (false); con.setRequestMethod (SystemConfig.post_method); // Tetapkan Informasi Header Permintaan Con.SetRequestProperty ("Connection", "Keep-Alive"); con.setRequestProperty ("charset", systemconfig.default_character_encoding); // atur batas batas batas = "-----------" + System.currentTimeMillis (); con.setRequestProperty ("tipe konten", "multipart/form-data; batas =" + batas); // Minta Informasi Teks // Bagian 1 Output = DataOutputStream baru (con.getOutputStream ()); Ioutils.write (("-" + Boundary + "/r/n").getbytes(systemConfig.default_character_encoding), output); Ioutils.write (("Disposisi Konten: Formulir-Data; Nama =/" Media/"; fileName =/" " + file.getName () +"/"/r/n") .getbytes (SystemConfig.default_character_encoding), output); Ioutils.write ("tipe konten: aplikasi/octet-stream/r/n/r/n" .getbytes (SystemConfig.default_character_encoding), output); // ioutils.write (("tipe konten:" + fileext + "/r/n/r/n"). GetBytes (), output); // File Body Part // Tekan file ke URL dengan streaming file inputStream = new datalputStream (FileInputStream baru (file)); Ioutils.copy (inputstream, output); // ending bagian ioutils.write (("/r/n--" + batas + "-/r/n"). GetBytes (SystemConfig.default_character_encoding), output); output.flush (); hasil = inputStreamToString (con.getInputStream ()); } catch (MalFormedurlexception e) {e.printstacktrace (); } catch (ProtocolException e) {E.PrintStackTrace (); } catch (ioException e) {lempar ioException baru ("Baca data kesalahan"); } akhirnya {ioutils.closequietly (output); Ioutils.closequietly (inputstream); } hasil pengembalian; } /** * Upload media file (cannot be local) * * @param method * Request method GET/POST * @param path * Api path * @param param * api parameter * @param mediaPath * The path of image/music to be uploaded * @param connTime * The connection time is default to 5000 * @param readTime * The read time is default to 5000 * @return * @throws Exception */ public static String HttpsuPloadMedia (metode string, jalur string, peta <string, string> param, string mediapatath, int conntime, int readtime) melempar pengecualian {string result = ""; Url url = url baru (setParmas (param, path, "")); OutputStream output = null; BufferedInputStream inputStream = null; coba {string batas = "----"; HttpurlConnection conn = getConnection (metode, url); Conn.SetConnectTimeOut (Conntime == 0? Default_Conntime: Conntime); conn.setreadtimeout (readTime == 0? Default_upload_readtime: readTime); conn.setRequestProperty ("tipe konten", "multipart/form-data; batas =" + batas); output = conn.getoutputStream (); URL MediaUrl = URL baru (Mediapath); if (mediaurl! = null) {httpUrlConnection mediaconn = (httpurlconnection) mediaurl.openconnection (); mediaconn.setDoOutput (true); mediaconn.setusecaches (false); mediaconn.setRequestMethod (SystemConfig.get_method); mediaconn.setConnecttimeout (conntime == 0? Default_conntime: conntime); mediaconn.setreadtimeout (readtime == 0? default_upload_readtime: readtime); String conntype = mediaconn.getContentType (); // Dapatkan File Extension String FileExt = getFileExt (ConnType); Ioutils.write (("-" + Boundary + "/r/n"). GetBytes (), output); Ioutils.write (("Disposisi Konten: Formulir-Data; Nama =/" Media/"; nama file =/" " + getFileName (MediaPath) +"/"/r/n"). GetBytes (), output); Ioutils.write (("tipe konten:" + fileext + "/r/n/r/n"). GetBytes (), output); inputStream = new bufferedInputStream (mediaconn.getInputStream ()); Ioutils.copy (inputstream, output); Ioutils.write (("/r/n ----" + batas + "-/r/n"). GetBytes (), output); mediaconn.disconnect (); // Dapatkan input aliran hasil = inputStreamToString (conn.getInputStream ()); }} catch (Malformedurlexception e) {e.printstacktrace (); } catch (ProtocolException e) {E.PrintStackTrace (); } catch (ioException e) {e.printstacktrace (); } akhirnya {ioutils.closequietly (output); Ioutils.closequietly (inputstream); } hasil pengembalian; } /** * Upload Video media file (local) * * @param method * Request method GET/POST * @param path * Api path * @param param * Api parameter* @param mediaPath * The path of the voide to be uploaded * @param title * Video title * @param introduction * Video description * @return * @throws Exception */ public static String HttpsUploadVideoMediaFile(String method, String path, peta <string, string> param, string mediaapath, string title, string pengantar) melempar pengecualian {string result = null; Url url = url baru (setParmas (param, path, "")); OutputStream output = null; InputStream datalputStream = null; coba {file file = File baru (MediaPath); if (! file.isfile () ||! file.exists ()) {throw new ioException ("File tidak ada"); } HttpurlConnection con = (httpurlConnection) url.openconnection (); con.setdoInput (true); con.setDoOutput (true); con.setusecaches (false); con.setRequestMethod (SystemConfig.post_method); // Tetapkan Informasi Header Permintaan Con.SetRequestProperty ("Connection", "Keep-Alive"); con.setRequestProperty ("charset", systemconfig.default_character_encoding); // atur batas batas batas = "-----------" + System.currentTimeMillis (); con.setRequestProperty ("tipe konten", "multipart/form-data; batas =" + batas); // Minta Informasi Tubuh // Bagian 1 Output = DataOutputStream baru (con.getoutputStream ()); Ioutils.write (("-" + Boundary + "/r/n").getbytes(systemConfig.default_character_encoding), output); Ioutils.write (("Disposisi konten: form-data; name =/" media/"; fileName =/" " + file.getName () +"/"/r/n") .getBytes (), output); Ioutils.write ("tipe konten: video/mp4/r/n/r/n" .getbytes (), output); // File Body Part // Tekan file ke URL dengan streaming file inputStream = new datalputStream (FileInputStream baru (file)); Ioutils.copy (inputstream, output); // bagian akhir ioutils.write (("-" + batas + "/r/n").getbytes(systemConfig.default_character_encoding), output); Ioutils.write ("Disposisi konten: form-data; name =/" description/";/r/n/r/n" .getbytes (SystemConfig.default_character_encoding), output); Ioutils.write (("{/" title/":/" " + title +"/",/" Pendahuluan/":/" " + Pendahuluan +"/"}") .getbytes (SystemConfig.default_Character_encoding), output); Ioutils.write (("/r/n--" + batas + "-/r/n/r/n"). GetBytes (SystemConfig.default_character_encoding), output); output.flush (); hasil = inputStreamToString (con.getInputStream ()); } catch (MalFormedurlexception e) {e.printstacktrace (); } catch (ProtocolException e) {E.PrintStackTrace (); } catch (ioException e) {lempar ioException baru ("Baca data kesalahan"); } akhirnya {ioutils.closequietly (output); Ioutils.closequietly (inputstream); } hasil pengembalian; } /** * Upload Video media file (network) * * @param method * Request method GET/POST * @param path * Api path * @param param * Api parameter * @param mediaPath * The path of the voide to be uploaded * @param title * Video title * @param introduction * Video description * @param connTime * The connection time defaults to 5000 * @param readTime * The default reading time is 5000 * @return * @Throws Exception */ Public Static String HttpsUploadVideoMedia (Metode String, String Path, Map <String, String> Param, String MediPath, String Title, String Pendahuluan, Int Conntime, Int Readtime) Melempar Exception {String hasil = null; Url url = url baru (setParmas (param, path, "")); OutputStream output = null; BufferedInputStream inputStream = null; coba {string batas = "----"; HttpurlConnection conn = getConnection (metode, url); Conn.SetConnectTimeOut (Conntime == 0? Default_Conntime: Conntime); conn.setreadtimeout (readTime == 0? Default_upload_readtime: readTime); conn.setRequestProperty ("tipe konten", "multipart/form-data; batas =" + batas); output = conn.getoutputStream (); URL MediaUrl = URL baru (Mediapath); if (mediaurl! = null) {httpUrlConnection mediaconn = (httpurlconnection) mediaurl.openconnection (); mediaconn.setDoOutput (true); mediaconn.setusecaches (false); mediaconn.setRequestMethod (SystemConfig.get_method); mediaconn.setConnecttimeout (conntime == 0? Default_conntime: conntime); mediaconn.setreadtimeout (readtime == 0? default_upload_readtime: readtime); Ioutils.write (("-" + Boundary + "/r/n"). GetBytes (), output); Ioutils.write (("Disposisi Konten: Formulir-Data; Nama =/" Media/"; nama file =/" " + getFileName (MediaPath) +"/"/r/n"). GetBytes (), output); Ioutils.write ("tipe konten: video/mp4/r/n/r/n" .getbytes (), output); inputStream = new bufferedInputStream (mediaconn.getInputStream ()); Ioutils.copy (inputstream, output); // bagian akhir ioutils.write (("-" + batas + "/r/n").getbytes(systemConfig.default_character_encoding), output); Ioutils.write ("Disposisi konten: form-data; name =/" description/";/r/n/r/n" .getbytes (SystemConfig.default_character_encoding), output); Ioutils.write (("{/" title/":/" " + title +"/",/" Pendahuluan/":/" " + Pendahuluan +"/"}") .getbytes (SystemConfig.default_Character_encoding), output); Ioutils.write (("/r/n--" + batas + "-/r/n/r/n"). GetBytes (SystemConfig.default_character_encoding), output); mediaconn.disconnect (); // Dapatkan input aliran hasil = inputStreamToString (conn.getInputStream ()); }} catch (Malformedurlexception e) {e.printstacktrace (); } catch (ProtocolException e) {E.PrintStackTrace (); } catch (ioException e) {lempar ioException baru ("Baca data kesalahan"); } akhirnya {ioutils.closequietly (output); Ioutils.closequietly (inputstream); } hasil pengembalian; }Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.