WeChat-Materialmanagement und Massenversuche sind nicht java-freundlich. In diesem Artikel wird nur die neuen temporären Materialien und die neuen dauerhaften Materialien vorgestellt und den Rest hinzugefügt, indem sie sie erhalten, löschen und modifizieren.
Es gibt oft Szenarien, in denen temporäre Multimedia -Materialien für offizielle Konten benötigt werden. Wenn Sie beispielsweise Schnittstellen verwenden, insbesondere beim Senden von Nachrichten, werden Operationen wie das Abrufen und Aufrufen von Multimedia -Dateien und Multimedia -Nachrichten über Media_ID durchgeführt. Die Materialverwaltungsschnittstelle ist offen für alle zertifizierten Abonnementnummern und Service -Nummern .
Materielle Einschränkungen
Bild: 2m, unterstützt PNG/JPEG/JPG/GIF -Format Voice: 2M, die Wiedergabelänge überschreitet die 60er Jahre nicht, unterstützt AMR/MP3 -Format Video (Video): 10MB, unterstützt MP4 -Format
1. Fügen Sie vorübergehende Materialien hinzu
Schnittstelle: https://api.weixin.qq.com/cgi-ner/media/upload?access_token=access_token&type=type und dann einen Medien-Dateityp übergeben, der Bild (Bild), Voice (Voice) (Video) und unverbesserliche (Thumbnail (Thumb) sein kann.
1. Abonnement- und Servicekonten müssen zertifiziert werden
2. Temporäres Material Media_ID ist wiederverwendbar
3. Die Mediendatei wird 3 Tage im WeChat -Hintergrund gespeichert, dh Media_id ist nach 3 Tagen ungültig.
/** * 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); try {string json = httpSuploadmediafile (Systemconfig.post_method, WechatConfig.Upload_Temp_Media_Type_url, Params, Pfad); result = jsonUtil.fromjonstring (JSON, UploadMediasResult.class); } catch (Ausnahme e) {e.printstacktrace (); } Rückgabeergebnis; } /** * 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); try {string json = httpSuploadmedia (SystemConfig.post_method, WechatConfig.Upload_Temp_Media_Type_url, Params, Pfad, 0, 0); result = jsonUtil.fromjonstring (JSON, UploadMediasResult.class); } catch (Ausnahme e) {e.printstacktrace (); } Rückgabeergebnis; }2. Fügen Sie dauerhafte Materialien hinzu
Schnittstelle: https://api.weixin.qq.com/cgi-ner/material/add_material?access_token=access_token&type=type, Medien-Dateitypen, einschließlich Bild (Bild), Voice (Voice), Video (Video, Ausnahme) und unverbindlich (Thumbnail (Thumb) (Thumbnail (Thumb)
/ ** * Dauerhaftes Material hochladen (lokal) * * @param accessToken * @param type * Medien -Dateitypen, einschließlich Bild (Bild), Voice (Voice), Video (Video) und Thumbnails (Thumb) * @return */ public static uploadMediasResult UploadFeMevermediaFile (String AccessToken, String -Path) {UploadMediasResult = null; Treemap <String, String> params = new Treemap <> (); params.put ("access_token", accessToken); params.put ("type", type); try {string json = httpSuploadmediafile (SystemConfig.post_method, WechatConfig.Upload_forever_Media_Type_url, Params, Pfad); result = jsonUtil.fromjonstring (JSON, UploadMediasResult.class); } catch (Ausnahme e) {e.printstacktrace (); } Rückgabeergebnis; } / ** * Dauerhaftes Material hochladen (Netzwerk) * * @param accessToken * @param type * Medien -Dateitypen, einschließlich Bild (Bild), Voice (Voice), Video (Video) und Thumbnails (Thumb) * @return * / public static uploadMediasResult Uploadforevermedia (String AccessToken, String Path) {UploadMediasResult uploadForedia. Treemap <String, String> params = new Treemap <> (); params.put ("access_token", accessToken); params.put ("type", type); try {string json = httpSuploadmedia (SystemConfig.post_method, WechatConfig.Upload_forever_Media_Type_url, Params, Pfad, 0, 0); result = jsonUtil.fromjonstring (JSON, UploadMediasResult.class); } catch (Ausnahme e) {e.printstacktrace (); } Rückgabeergebnis; }Besonderes Augenmerk sollte dem Hinzufügen dauerhafter Videodaterialien gelegt werden. Beim Hochladen von Videomaterialien müssen Sie ein anderes Formular mit der ID -Beschreibung posten, einschließlich der Beschreibungsinformationen des Materialstitels und der Einführung, und das Inhaltsformat ist JSON.
/ ** * Dauermaterial hochladen (Video) * * @param AccessToken * @return */ public static String UploadFowItReDiafile (String AccessToken, String -Title, String -Einführung, String -Pfad) {TREMAP <string, string> params = new Treemap <> (); params.put ("access_token", accessToken); params.put ("Typ", "Video"); String mediAd = null; try {string json = httpSuploadvideomediafile (SystemConfig.post_method, WechatConfig.Upload_forever_Media_Type_url, Params, Pfad, Titel, Einführung); MediaId = jsonUtil.fromjonstring (json, "media_id"); } catch (Ausnahme e) {e.printstacktrace (); } return MediaId; } / ** * Permanentes Material hochladen (Video, Netzwerk) * * @param AccessToken * @return * / public static String UploadFowevermedia (String AccessToken, String -Titel, String -Einführung, String -Pfad) {TREEMAP <string, string> params = new treemap <> (); params.put ("access_token", accessToken); params.put ("Typ", "Video"); String mediAd = null; try {string json = httpSuploadvideomedia (SystemConfig.post_method, WechatConfig.Upload_forever_Media_Type_url, Params, Pfad, Titel, Einführung, 0, 0, 0); MediaId = jsonUtil.fromjonstring (json, "media_id"); } catch (Ausnahme e) {e.printstacktrace (); } return MediaId; }3.. Fügen Sie dauerhafte grafische Materialien hinzu
Schnittstelle: https://api.weixin.qq.com/cgi-ner/material/add_news?access_token=access_token finden Sie in der hochloadnewsmedia-Entitätsklasse, um Informationen zu erhalten.
Für häufig verwendete Materialien können Entwickler sie über diese Schnittstelle auf den WeChat -Server hochladen und dauerhaft verwenden.
1. Nachdem das permanente Bildmaterial hinzugefügt wurde, wird es mit einer URL an den Entwickler zurückgegeben. Der Entwickler kann es innerhalb des Tencent -Domänennamens verwenden (verwenden Sie ihn außerhalb des Tencent -Domänennamens und das Bild wird blockiert).
2. Die Gesamtzahl der gespeicherten Materialien auf dem offiziellen Konto ist beschränkt auf: Die Obergrenze von Grafik- und Textnachrichtenmaterialien und Bildmaterialien beträgt 5.000 und andere Typen 1000.
3. In dem spezifischen Inhalt der Grafik- und Textnachrichten filtert das WeChat -Backend externe Bildverknüpfungen und die Bild -URL muss über die Schnittstelle "Das Bild in die Grafik- und Textnachrichten hochladen" hochgeladen werden.
4. Die auf der Schnittstelle "Bilder hochgeladenen Bilder in den Textnachrichten, um URLs zu erhalten" hochgeladen werden nicht die Grenze von 5.000 Bildern in der Materialbibliothek des offiziellen Kontos. Die Bilder unterstützen nur das JPG/PNG -Format, und die Größe muss weniger als 1 MB betragen.
5. Die Grafik- und Textnachrichten unterstützen die Möglichkeit, Ihr eigenes Konto und andere öffentliche Konten in den Haupttext einzufügen und haben Links zum Artikel veröffentlicht.
/ ** * Material zum Hochladen dauerhafter Grafik- und Textnachrichten * * @param AccessToken * Autorisiertes Token * @param Entity * Bild- und Textnachrichtenobjekt * @return */ public static uploadMediasResult UploadNewsmedia (String AccessToken, List <UploadNewsMedia> Entity) {UploadMediasResult -Ergebnis = null; Treemap <String, String> params = new Treemap <> (); params.put ("access_token", accessToken); // Sendete Parameter TREEMAP <String, Liste <UploadNewsMedia >> dataparams = new Treemap <String, Liste <UploadNewsMedia >> (); Dataparams.put ("Artikel", Entität); String data = jsonUtil.tojonstring (dataparams); String json = httprequtil.httpsdefaultExecute (SystemConfig.post_method, WechatConfig.Upload_forever_News_Media_url, Params, Daten); result = jsonUtil.fromjonstring (JSON, UploadMediasResult.class); Rückgabeergebnis; }4. Laden Sie die Bilder in der Textnachricht hoch, um die URL zu erhalten
Schnittstelle: https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=access_token
Die auf dieser Schnittstelle hochgeladenen Bilder belegen nicht die Grenze von 5.000 Bildern in der Materialbibliothek des offiziellen Kontos. Bilder unterstützen nur das JPG/PNG -Format, und die Größe muss weniger als 1 MB betragen. Die von dieser Schnittstelle zurückgegebene URL ist die URL zum Hochladen des Bildes, das in Textnachrichten platziert werden kann.
/ ** * Laden Sie das Bild in die Textnachricht hoch, um die URL (lokal) * * @param accessToken * @param path * @return */ public static String UploadImgMediafile (String AccessToken, String Pfad) {TREEMAP <String, String> Params = New Treemap <> (); params.put ("access_token", accessToken); String url = null; try {string json = httpSuploadmediafile (SystemConfig.post_method, WechatConfig.Upload_img_Media_url, Params, Pfad); url = jsonUtil.fromjonstring (json, "url"); } catch (Ausnahme e) {e.printstacktrace (); } return URL; } / ** * Laden Sie das Bild in die Textnachricht hoch, um die URL (Netzwerk) * * @param AccessToken * @param path * @return * / public static String UploadImgMedia (String AccessToken, String Pfad) {TREEMAP <String, String> Params = New Treemap <String, String> (); params.put ("access_token", accessToken); String url = null; try {string json = httpSuploadmedia (SystemConfig.post_method, WechatConfig.Upload_img_Media_url, Params, Pfad, 0, 0); url = jsonUtil.fromjonstring (json, "url"); } catch (Ausnahme e) {e.printstacktrace (); } return URL; }V. Einige Werkzeuge
Konfigurationsklasse
public static final String upload_img_media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg"; public static final String upload_forever_news_media_url = "https://api.weixin.qqqq.com/cgi-ner/material/add_news"; public static Final String upload_temp_media_type_url = "https://api.weixin.qq.com/cgi-bin/media/upload"; public static Final String upload_forever_media_type_url = "https://api.weixin.qqqq.com/cgi-ner/material/add_material";
Laden Sie Grafik- und SMS -Meldungsmaterial Return Class hoch
Paket com.phil.wechat.msg.model.media; / *** Ergebnisse zurückgegeben, indem Grafik- und Textnachrichtenmaterialien hochgeladen werden // Medien -Dateitypen, einschließlich Bild (Bild), Sprache (Sprache), Video (Video) und Thumbnail (Daumen), die Anzahl der Zeiten ist Neuigkeiten, dh private String media_id; // Mediendatei/eindeutige Kennung erhalten nach dem Hochladen von Grafik- und Textnachrichten private Zeichenfolge erstellt_at; // Mediendatei Upload -Zeit}
Laden Sie Grafik- und SMS -Materialsmaterial Entitätsklasse hoch
Paket com.phil.wechat.msg.model.media; importieren java.io.serializable; / *** Laden Sie Grafiknachrichtenmaterialienklasse hoch* @Author Phil* @date 20. September 2017*/ Public Class UploadNewsMedia implementiert serialisierbar {private statische endgültige long serialversionuid = 6551817058101753854L; private String thumb_media_id; // Media_ID der Miniaturansicht der grafischen Nachricht kann einen privaten String-Autor in der grundlegenden Support-Upload-Multimedia-Dateischnittstelle erhalten. // Autor der grafischen Nachricht private Zeichenfolge; // Titel der grafischen Nachricht private String content_source_url; // Klicken Sie auf den Link, um den ursprünglichen Text für private Zeichenfolge inhaltlich zu lesen. // Inhalt der Grafiknachrichtsseite unterstützt HTML Tag Private String Digest. // Beschreibung der grafischen Nachricht private int show_conver_pic; // Ob es als Cover 1 angezeigt wird, bedeutet, dass es als Cover 0 angezeigt wird.Methode hochladen
/** * Mediendatei hochladen (lokal) * * @param Methode * Anforderungsmethode Get/post * @param Pfad * API -Pfad * @param Parameter * API -Parameter * @param MediaPath * Der Pfad der Bild/Musik soll hochgeladen werden URL URL = neue URL (setParmas (Param, Pfad, ""); OutputStream output = null; DataNputStream InputStream = NULL; try {Datei file = new Datei (MediaPath); if (! file.isfile () ||! file.exists ()) {neue IOException ("Datei nicht existieren"); } HttpurlConnection con = (httpurlConnection) url.openconnection (); con.setDoInput (true); con.setDooutput (true); con.setusecaches (falsch); con.setRequestMethod (SystemConfig.Post_Method); // Anforderungsheaderinformation festlegen. con.setRequestProperty ("CharSet", SystemConfig.Default_Character_encoding); // Grenzstring-String boundary = "-----------" + System.currentTimemillis (); con.setRequestProperty ("Content-Typ", "Multipart/Form-Data; bloße =" + bandary); // Textinformationen anfordern // Teil 1 output = new DataOutputStream (con.getOutputStream ()); Ioutils.write (("-" + boundary + "/r/n").getbytes(systemconfig.Default_character_encoding), Ausgabe); Ioutils.write (("Inhaltsdisposition: Form-Data; name =/" media/"; fileName =/" " + file.getName () +"/"/r/n") .getBytes (Systemconfig.Default_Character_encoding), Ausgabe); Ioutils.write ("Content-Type: Anwendung/Oktett-Stream/R/N/R/N" .getBytes (SystemConfig.Default_Character_encoding), Ausgabe); // ioutils.write (("Content-Typ:" + Fileext + "/r/n/r/n"). GetBytes (), Ausgabe); // Dateikörperteil // die Datei in die URL drücken, indem Sie den Datei inputStream = new DataNputStream (neuer FileInputStream (Datei))) drücken; Ioutils.copy (InputStream, Ausgabe); // End-Teil ioutils.write (("/r/n--" + bloße + "-/r/n"). GetBytes (Systemconfig.Default_Character_encoding), Ausgabe); output.flush (); result = InputStreamtoString (con.getInputStream ()); } catch (fehl Formaledurlexception e) {e.printstacktrace (); } catch (protocolException e) {e.printstacktrace (); } catch (ioException e) {neue ioException ("Datenfehler lesen"); } endlich {ioutils.closequiet (output); Ioutils.closequiet (InputStream); } Rückgabeergebnis; }/** * Die Mediendatei hochladen (kann nicht lokal sein) * * @param Methode * Anforderungsmethode get/post * @param Pfad * API -Pfad * @param Parameter * API -Parameter * @param MediaPath * Der Pfad der Bild/Musik soll hochgeladen werden HttpSuploadMedia (String -Methode, String -Pfad, Map <String, String> Param, String MediaPath, int conntime, int readtime) löst eine Ausnahme aus {String result = ""; URL URL = neue URL (setParmas (Param, Pfad, ""); OutputStream output = null; BufferedInputStream InputStream = null; try {String boundary = "----"; HttpurlConnection conn = getConnection (Methode, URL); conn.setConnectTimeout (conntime == 0? default_conntime: connTime); conn.setReadTimeout (readtime == 0? default_upload_readtime: readtime); Conn.SetRequestProperty ("Content-Typ", "Multipart/Form-Data; bloße =" + bandary); output = conn.getOutputStream (); Url mediaurl = new URL (MediaPath); if (mediasurl! MediaConn.SetDooutput (true); MediaConn.SetUSecaches (falsch); MediaConn.SetRequestMethod (SystemConfig.get_Method); MediaConn.SetConnectTimeout (conntime == 0? default_conntime: connTime); MediaConn.SetReadTimeOut (readtime == 0? default_upload_readtime: readtime); String connType = mediasconn.getContentType (); // Datei -Erweiterungsstring -String -Dateiext = getFileext (connType) erhalten; Ioutils.write (("-" + boundary + "/r/n"). GetBytes (), output); Ioutils.write (("Inhaltsdisposition: Formdaten; name =/" media/"; fileName =/" " + getFileName (MediaPath) +"/"/r/n"). GetBytes (), Ausgabe); Ioutils.write (("Content-Typ:" + Fileext + "/r/n/r/n"). GetBytes (), Ausgabe); inputStream = new bufferedInputStream (MediaConn.GetInputStream ()); Ioutils.copy (InputStream, Ausgabe); Ioutils.write (("/r/n ----" + bloße + "-/r/n"). GetBytes (), Ausgabe); MediaConn.Disconnect (); // Eingabestream ergeben. }} catch (fehl Formaledurlexception e) {e.printstacktrace (); } catch (protocolException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); } endlich {ioutils.closequiet (output); Ioutils.closequiet (InputStream); } Rückgabeergebnis; } /** * 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, Karte <String, String> Param, String MediaPath, String -Title, String -Einführung) löst Ausnahme aus {String result = null; URL URL = neue URL (setParmas (Param, Pfad, ""); OutputStream output = null; DataNputStream InputStream = NULL; try {Datei file = new Datei (MediaPath); if (! file.isfile () ||! file.exists ()) {neue IOException ("Datei nicht existieren"); } HttpurlConnection con = (httpurlConnection) url.openconnection (); con.setDoInput (true); con.setDooutput (true); con.setusecaches (falsch); con.setRequestMethod (SystemConfig.Post_Method); // Anforderungsheaderinformation festlegen. con.setRequestProperty ("CharSet", SystemConfig.Default_Character_encoding); // Grenzstring-String boundary = "-----------" + System.currentTimemillis (); con.setRequestProperty ("Content-Typ", "Multipart/Form-Data; bloße =" + bandary); // Körperinformationen anfordern // Teil 1 output = new DataOutputStream (con.getOutputStream ()); Ioutils.write (("-" + boundary + "/r/n").getbytes(systemconfig.Default_character_encoding), Ausgabe); Ioutils.write (("Inhaltsdisposition: Form-Data; name =/" media/"; fileName =/" " + file.getName () +"/"/r/n") .getBytes (), Ausgabe); Ioutils.write ("Content-Typ: Video/MP4/R/N/R/N" .GetByTes (), Ausgabe); // Dateikörperteil // die Datei in die URL drücken, indem Sie den Datei inputStream = new DataNputStream (neuer FileInputStream (Datei))) drücken; Ioutils.copy (InputStream, Ausgabe); // End-Teil ioutils.write (("-" + boundary + "/r/n").getBytes(systemConfig.Default_Character_encoding), Ausgabe); Ioutils.write ("Inhaltsdisposition: Form-Daten; name =/" Beschreibung/";/r/n/r/n" .getBytes (Systemconfig.Default_Character_encoding), Ausgabe); Ioutils.write (("{/" title/":/" " + title +"/",/" Einführung/":/" " + Einführung +"/"}") .getBytes (Systemconfig.Default_character_encoding), Ausgabe); Ioutils.write (("/r/n--" + boundary + "-/r/n/r/n"). GetBytes (SystemConfig.Default_Character_encoding), Ausgabe); output.flush (); result = InputStreamtoString (con.getInputStream ()); } catch (fehl Formaledurlexception e) {e.printstacktrace (); } catch (protocolException e) {e.printstacktrace (); } catch (ioException e) {neue ioException ("Datenfehler lesen"); } endlich {ioutils.closequiet (output); Ioutils.closequiet (InputStream); } Rückgabeergebnis; } /** * Video -Mediendatei hochladen (Netzwerk) * * @param Methode * Anforderungsmethode get /post * @param Pfad * API -Pfad * @param Parameter * API -Parameter * @param MediaPath * Der Pfad der Voide, die hochgeladen werden soll @throws Exception */ public static String httpSuploadvideomedia (String -Methode, String -Pfad, Map <String, String> Param, String MediaPath, String -Title, String -Einführung, int conntime, int readtime) löst Ausnahme aus {String result = null; URL URL = neue URL (setParmas (Param, Pfad, ""); OutputStream output = null; BufferedInputStream InputStream = null; try {String boundary = "----"; HttpurlConnection conn = getConnection (Methode, URL); conn.setConnectTimeout (conntime == 0? default_conntime: connTime); conn.setReadTimeout (readtime == 0? default_upload_readtime: readtime); Conn.SetRequestProperty ("Content-Typ", "Multipart/Form-Data; bloße =" + bandary); output = conn.getOutputStream (); Url mediaurl = new URL (MediaPath); if (mediasurl! MediaConn.SetDooutput (true); MediaConn.SetUSecaches (falsch); 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 (("Inhaltsdisposition: Formdaten; name =/" media/"; fileName =/" " + getFileName (MediaPath) +"/"/r/n"). GetBytes (), Ausgabe); Ioutils.write ("Content-Typ: Video/MP4/R/N/R/N" .GetByTes (), Ausgabe); inputStream = new bufferedInputStream (MediaConn.GetInputStream ()); Ioutils.copy (InputStream, Ausgabe); // End-Teil ioutils.write (("-" + boundary + "/r/n").getBytes(systemConfig.Default_Character_encoding), Ausgabe); Ioutils.write ("Inhaltsdisposition: Form-Daten; name =/" Beschreibung/";/r/n/r/n" .getBytes (Systemconfig.Default_Character_encoding), Ausgabe); Ioutils.write (("{/" title/":/" " + title +"/",/" Einführung/":/" " + Einführung +"/"}") .getBytes (Systemconfig.Default_character_encoding), Ausgabe); Ioutils.write (("/r/n--" + boundary + "-/r/n/r/n"). GetBytes (SystemConfig.Default_Character_encoding), Ausgabe); MediaConn.Disconnect (); // Eingabestream ergeben. }} catch (fehl Formaledurlexception e) {e.printstacktrace (); } catch (protocolException e) {e.printstacktrace (); } catch (ioException e) {neue ioException ("Datenfehler lesen"); } endlich {ioutils.closequiet (output); Ioutils.closequiet (InputStream); } Rückgabeergebnis; }Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.