إدارة مواد WeChat والنشر الجماعي ليست صديقة لل Java. تقدم هذه المقالة فقط المواد المؤقتة الجديدة والمواد الدائمة الجديدة ، وتضيف الباقي عن طريق الحصول على وحذفها وتعديلها.
غالبًا ما تكون هناك سيناريوهات حيث تكون هناك حاجة إلى مواد الوسائط المتعددة المؤقتة للحسابات الرسمية. على سبيل المثال ، عند استخدام واجهات ، خاصة عند إرسال الرسائل ، يتم تنفيذ عمليات مثل الحصول على ملفات الوسائط المتعددة واتصالها ، ورسائل الوسائط المتعددة ، من خلال Media_id. واجهة إدارة المواد مفتوحة لجميع أرقام الاشتراك المعتمدة وأرقام الخدمة .
قيود المواد
الصورة: 2M ، يدعم PNG/JPEG/JPG/GIF تنسيق الصوت: 2M ، طول التشغيل لا يتجاوز 60s ، يدعم فيديو تنسيق AMR/MP3 (فيديو): 10 ميغابايت ، يدعم تصوير تنسيق MP4: 64 كيلو بايت ، يدعم تنسيق JPG
1. إضافة مواد مؤقتة
الواجهة: https://api.weixin.qq.com/cgi-bin/media/upload؟access_token=access_token&type=type ، ثم تمرير نوع ملف الوسائط ، والذي يمكن أن يكون صورة (صورة) ، صوت (صوت) ، فيديو (فيديو) و thumbnail (thumb).
1. يجب اعتماد حسابات الاشتراك والخدمة
2. المواد المؤقتة media_id قابلة لإعادة الاستخدام
3. يتم تخزين ملف الوسائط في خلفية WeChat لمدة 3 أيام ، أي أن Media_id سيكون غير صالح بعد 3 أيام.
/ ** * تحميل المواد المؤقتة (محلية) * * param AccessToken * param type * أنواع ملفات الوسائط ، بما في ذلك الصورة (صورة) ، صوت (صوت) ، فيديو (فيديو) و Thumbnails (Thumb) * param path * path path * regload */ public exploadmediasresultploadtempediMediAfile ( treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ params.put ("type" ، type) ؛ حاول {string json = httpsuploadmediaFile (SystemConfig.post_method ، wechatconfig.upload_temp_media_type_url ، params ، path) ؛ النتيجة = jsonutil.fromjsonstring (JSON ، UploadMediasResult.Class) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } نتيجة الإرجاع ؛ } / ** * تحميل المواد المؤقتة (الشبكة) * * param AccessToken * param type * أنواع ملفات الوسائط ، بما في ذلك الصورة (الصورة) ، الصوت (الصوت) ، الفيديو (الفيديو) و Thumbnails (الإبهام) * param path * path path * @registult toploadmediasresultistult apploadtempedia (string type ، string path) treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ params.put ("type" ، type) ؛ حاول {string json = httpsuploadmedia (systemConfig.post_method ، wechatconfig.upload_temp_media_type_url ، params ، path ، 0 ، 0) ؛ النتيجة = jsonutil.fromjsonstring (JSON ، UploadMediasResult.Class) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } نتيجة الإرجاع ؛ }2. إضافة مواد دائمة
الواجهة: https://api.weixin.qq.com/cgi-bin/material/add_material؟access_token=access_token&type=type ، أنواع ملفات الوسائط ، بما في ذلك الصورة (الصورة) ، صوت (صوت) ، فيديو (فيديو ، استثناء) و thumbnail (thumb)
/ ** * تحميل مادة دائمة (محلية) * * param AccessToken * param type * أنواع ملفات الوسائط ، بما في ذلك الصورة (صورة) ، صوت (صوت) ، فيديو (فيديو) و thumbnails (الإبهام) * return */ public exploadmediasresultultultuldermedivelyfile (سلسلة الوصول ، نوع السلسلة ، مسار السلسلة) treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ params.put ("type" ، type) ؛ حاول {string json = httpsuploadmediaFile (SystemConfig.post_method ، wechatconfig.upload_forever_media_type_url ، params ، path) ؛ النتيجة = jsonutil.fromjsonstring (JSON ، UploadMediasResult.Class) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } نتيجة الإرجاع ؛ } / ** * تحميل مادة دائمة (شبكة) * * param AccessToken * param type * أنواع ملفات الوسائط ، بما في ذلك الصورة (الصورة) ، الصوت (الصوت) ، الفيديو (الفيديو) و thumbnails (الإبهام) * return * / public exploadmediasresult eploadvermedia (string accesstoken ، string path) treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ params.put ("type" ، type) ؛ حاول {string json = httpsuploadmedia (systemConfig.post_method ، wechatconfig.upload_forever_media_type_url ، params ، path ، 0 ، 0) ؛ النتيجة = jsonutil.fromjsonstring (JSON ، UploadMediasResult.Class) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } نتيجة الإرجاع ؛ }يجب إيلاء اهتمام خاص لإضافة مواد فيديو دائمة. عند تحميل مواد الفيديو ، تحتاج إلى نشر نموذج آخر ، مع وصف المعرف ، بما في ذلك معلومات الوصف لعنوان المواد والمقدمة ، وتنسيق المحتوى هو JSON.
/ ** * تحميل المادة الدائمة (فيديو) * * param accessToken * @RETURN */ public static string exploadveredivermediaFile (سلسلة accessToken ، عنوان السلسلة ، مقدمة السلسلة ، مسار السلسلة) {treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ params.put ("type" ، "video") ؛ String MediaId = null ؛ حاول {string json = httpsuploadvideaMediaFile (systemConfig.post_method ، wechatconfig.upload_forever_media_type_url ، params ، المسار ، العنوان ، مقدمة) ؛ mediaid = jsonutil.fromjsonstring (json ، "media_id") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } إرجاع MediaId ؛ } / ** * تحميل مادة دائمة (الفيديو ، الشبكة) * * param accessToken * @REGARN * / public static string exploadvermedia (سلسلة accessToken ، عنوان السلسلة ، مقدمة السلسلة ، مسار السلسلة) {treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ params.put ("type" ، "video") ؛ String MediaId = null ؛ حاول {string json = httpsuploadvideomedia (SystemConfig.post_method ، wechatconfig.upload_forever_media_type_url ، params ، المسار ، العنوان ، مقدمة ، 0 ، 0) ؛ mediaid = jsonutil.fromjsonstring (json ، "media_id") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } إرجاع MediaId ؛ }3. إضافة مواد رسومية دائمة
الواجهة: https://api.weixin.qq.com/cgi-bin/material/add_news؟access_token=Access_Token ، يرجى الرجوع إلى فئة exploadNewsMedia للحصول على معلومات نشر.
بالنسبة للمواد الشائعة الاستخدام ، يمكن للمطورين تحميلها على خادم WeChat من خلال هذه الواجهة واستخدامها بشكل دائم.
1. بعد إضافة مادة الصورة الدائمة ، سيتم إرجاعها إلى المطور بعنوان URL. يمكن للمطور استخدامه داخل اسم المجال Tencent (استخدمه خارج اسم المجال Tencent ، وسيتم حظر الصورة).
2. يقتصر إجمالي عدد المواد المحفوظة في الحساب الرسمي على: الحد الأعلى لمواد الرسائل الرسومية والرسائل النصية ومواد الصور هو 5000 ، وأنواع أخرى هي 1000.
3. في المحتوى المحدد للرسائل الرسمية والرسائل النصية ، ستقوم الواجهة الخلفية WeChat بتصفية روابط الصور الخارجية ، ويجب تحميل عنوان URL للصورة من خلال "تحميل الصورة في الرسائل الرسم والرسائل النصية للحصول على عنوان URL".
4. الصور التي تم تحميلها على واجهة "تحميل الصور في الرسائل النصية للحصول على عناوين URL" لا تشغل الحد الأقصى لـ 5000 صورة في مكتبة المواد للحساب الرسمي. تدعم الصور تنسيق JPG/PNG فقط ، ويجب أن يكون الحجم أقل من 1 ميجابايت.
5. تدعم الرسائل الرسم والرسائل النصية القدرة على إدراج حسابك الخاص وحسابات عامة أخرى في النص الرئيسي ونشرت روابط إلى المقالة.
/ ** * مادة لتحميل الرسائل الرسم والرسائل النصية الدائمة * * param AccessToken * رمز رمز * @Param * كائن الصورة والرسالة النصية * @RETURN */ public uploadmediasresultultultultultnewsmedia (سلسلة AccessToken ، قائمة <povloadNewsMedia> entity) treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ // post post parameters treemap <string ، list <uploadNewSmedia >> dataparams = new treemap <string ، list <apploadNewSmedia >> () ؛ dataparams.put ("المقالات" ، الكيان) ؛ بيانات السلسلة = jsonutil.tojsonstring (dataparams) ؛ String json = httprequtil.httpsdefaultexecute (SystemConfig.post_method ، wechatconfig.upload_forever_news_media_url ، params ، data) ؛ النتيجة = jsonutil.fromjsonstring (JSON ، UploadMediasResult.Class) ؛ نتيجة العودة }4. قم بتحميل الصور في الرسالة النصية للحصول على عنوان URL
الواجهة: https://api.weixin.qq.com/cgi-bin/media/uploadimg؟access_token=access_token
الصور التي تم تحميلها على هذه الواجهة لا تشغل الحد الأقصى ل 5000 صورة في مكتبة المواد للحساب الرسمي. تدعم الصور تنسيق JPG/PNG فقط ، ويجب أن يكون الحجم أقل من 1 ميجابايت. عنوان URL الذي تم إرجاعه بواسطة هذه الواجهة هو عنوان URL لتحميل الصورة ، والتي يمكن وضعها في الرسائل النصية.
/ ** * قم بتحميل الصورة في الرسالة النصية للحصول على عنوان URL (محلي) * * param AccessToken * param path * @RETURN */ public static string exploadImgMediaFile (سلسلة AccessToken ، مسار السلسلة) {treemap <string ، string> params = new treemap <> () ؛ params.put ("Access_Token" ، AccessToken) ؛ url url string = null ؛ حاول {string json = httpsuploadmediaFile (SystemConfig.post_method ، wechatconfig.upload_img_media_url ، params ، path) ؛ url = jsonutil.fromjsonstring (json ، "url") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } URL Return ؛ } / ** * قم بتحميل الصورة في الرسالة النصية للحصول على عنوان url (الشبكة) * * param AccessToken * param path * @return * / public static String UploadImgmedia (سلسلة AccessToken ، مسار السلسلة) {treemap <string ، string> params = new treemap <string ، string> () ؛ params.put ("Access_Token" ، AccessToken) ؛ url url string = null ؛ حاول {string json = httpsuploadmedia (SystemConfig.post_method ، wechatconfig.upload_img_media_url ، params ، المسار ، 0 ، 0) ؛ url = jsonutil.fromjsonstring (json ، "url") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } URL Return ؛ }خامسا بعض الأدوات
فئة التكوين
السلسلة النهائية الثابتة العامة upload_img_media_url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg" ؛ السلسلة النهائية الثابتة العامة upload_forever_news_media_url = "https://api.weixin.qq.com/cgi-bin/material/add_news" ؛ السلسلة النهائية الثابتة العامة upload_temp_media_type_url = "https://api.weixin.qq.com/cgi-bin/media/upload" ؛ Static Static Final String Upload_Forever_media_type_url = "https://api.weixin.qq.com/cgi-bin/material/add_material" ؛
قم بتحميل فئة إرجاع المواد الرسومية والرسالة النصية
حزمة com.phil.wechat.msg.model.media ؛ / *** النتائج التي تم إرجاعها عن طريق تحميل مواد الرسائل الرسومية والرسائل النصية* Author Phil* date 20 سبتمبر 2017**/ الفئة العامة exploadmediasresult {نوع السلسلة الخاصة ؛ // أنواع ملفات الوسائط ، بما في ذلك Image (Image) ، Voice (صوت) ، فيديو (فيديو) و Thumbnail (Thumb) ، عدد المرات هو الأخبار ، أي سلسلة Media_id الخاصة ؛ // ملف الوسائط/معرف فريد تم الحصول عليه بعد تحميل الرسائل الرسمية والرسائل النصية سلسلة خاصة تم إنشاؤها _at ؛ // Media File Time Time}تحميل فئة كيان مواد الرسائل النصية والرسالة النصية
حزمة com.phil.wechat.msg.model.media ؛ استيراد java.io.serializable ؛ / *** تحميل رسائل الرسائل الرسمية فئة الكيان* Author Phil* date 20 سبتمبر 2017*/ فئة Public ToploadNewSmedia قم بتسلسلي {Private Static Final Long SerialVersionuid = 6551817058101753854L ؛ سلسلة خاصة thumb_media_id ؛ // media_id من الصورة المصغرة لرسالة الرسوم يمكن أن تحصل على مؤلف سلسلة خاصة في واجهة ملفات الوسائط المتعددة الدعم الأساسية ؛ // مؤلف عنوان الرسائل الرسومية عنوان السلسلة الخاصة ؛ // عنوان رسالة الرسوم الخاصة بالسلسلة الخاصة content_source_url ؛ // انقر فوق الرابط لقراءة محتوى السلسلة الخاصة النص الأصلي ؛ // محتوى صفحة الرسائل الرسومية يدعم HTML Tag Private String Digest ؛ // وصف الرسالة الرسومية الخاصة int show_conver_pic ؛ // ما إذا كان يتم عرضه كغطاء 1 يعني أنه يتم عرضه لأن الغطاء 0 لا يتم عرضه كغطاء}طريقة التحميل
! url url = url جديد (setParmas (param ، path ، "")) ؛ OutputStream Output = null ؛ datainputStream inputStream = null ؛ حاول {file file = ملف جديد (MediaPath) ؛ if (! file.isfile () ||! file.exists ()) {رمي ioException جديد ("الملف غير موجود") ؛ } httpurlConnection con = (httpurlConnection) url.openconnection () ؛ consetDoInput (صواب) ؛ consetDooutput (صواب) ؛ consetuseCaches (false) ؛ Con.SetRequestMethod (SystemConfig.post_method) ؛ . Con.SetRequestProperty ("charset" ، SystemConfig.default_character_encoding) ؛ // تعيين حدود سلسلة الحدود = "-----------" System.CurrentTimeMillis () ؛ Con.SetRequestProperty ("نوع المحتوى" ، "multipart/form-data ؛ boundary =" + boundary) ؛ // طلب معلومات النص // الجزء 1 الإخراج = جديد DataOutputStream (con.getOutputStream ()) ؛ ioutils.write (("-" + حدود + "/r/n").getBytes(systemConfig.default_character_encoding) ، الإخراج) ؛ ioutils.write (("disposition content: form-data ؛ name =/" media/"؛ filename =/" " + file.getName () +"/"/r/n") .getBytes (SystemConfig.default_character_encoding) ، الإخراج) ؛ ioutils.write ("نوع المحتوى: التطبيق/acord-stream/r/n/r/n" .getBytes (SystemConfig.default_character_encoding) ، الإخراج) ؛ // ioutils.write (("نوع المحتوى:" + filext + "/r/n/r/n"). getBytes () ، الإخراج) ؛ // file body part // ادفع الملف إلى عنوان URL عن طريق دفق الملف inputStream = جديد datainputStream (FileInputStream جديد (ملف)) ؛ ioutils.copy (inputStream ، الإخراج) ؛ // إنهاء الجزء ioutils.write (("/r/n--" + حدود + "-/r/n"). getBytes (SystemConfig.default_character_encoding) ، الإخراج) ؛ output.flush () ؛ النتيجة = inputStreamToString (con.getInputStream ()) ؛ } catch (malformedurlexception e) {e.printStackTrace () ؛ } catch (protocolexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {رمي ioException جديد ("قراءة خطأ البيانات") ؛ } أخيرًا {ioutils.closequietly (الإخراج) ؛ ioutils.closequietly (inputStream) ؛ } نتيجة الإرجاع ؛ }/** * تحميل ملف الوسائط (لا يمكن أن يكون محليًا) * * param طريقة * طريقة الطلب get/post * param path * api path * @param param * api parameter * param mediapath * مسار الصورة/الموسيقى المراد تحميل httpsuploadmedia (طريقة السلسلة ، مسار السلسلة ، الخريطة <string ، string> param ، string mediapath ، int conntime ، int readtime) يلقي الاستثناء {string result = "" ؛ url url = url جديد (setParmas (param ، path ، "")) ؛ OutputStream Output = null ؛ bufferedInputStream inputStream = null ؛ جرب {String Boundary = "----" ؛ httpurlConnection conn = getConnection (method ، url) ؛ conn.setConnectTimeOut (conntime == 0؟ default_conntime: conntime) ؛ conn.setReadTimeout (readtime == 0؟ default_upload_readtime: readtime) ؛ conn.setRequestProperty ("نوع المحتوى" ، "multipart/form-data ؛ boundary =" + boundary) ؛ الإخراج = conn.getOutputStream () ؛ url mediaurl = عنوان URL جديد (MediaPath) ؛ if (mediaUrl! = null) {httpurlConnection mediaConn = (httpurlConnection) mediaurl.openconnection () ؛ mediaConn.setDooutput (صواب) ؛ 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 () ؛ // الحصول على ملف تمديد الملف filext = getFileStex (conntype) ؛ ioutils.write (("-" + حدود + "/r/n"). getBytes () ، الإخراج) ؛ ioutils.write (("disposition content: form-data ؛ name =/" media/"؛ filename =/" " + getFilename (mediaPath) +"/"/r/n"). getBytes () ، output) ؛ ioutils.write (("نوع المحتوى:" + filext + "/r/n/r/n"). getBytes () ، الإخراج) ؛ inputStream = جديد bufferedInputStream (mediaConn.getInputStream ()) ؛ ioutils.copy (inputStream ، الإخراج) ؛ ioutils.write (("/r/n ----" + حدود + "-/r/n"). getBytes () ، الإخراج) ؛ MediConn.Disconnect () ؛ // الحصول على نتيجة دفق الإدخال = inputStreamToString (conn.getInputStream ()) ؛ }} catch (malformedurlexception e) {e.printStackTrace () ؛ } catch (protocolexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {ioutils.closequietly (الإخراج) ؛ ioutils.closequietly (inputStream) ؛ } نتيجة الإرجاع ؛ }/** * تحميل ملف Media Video (محلي) * * param طريقة * طريقة الطلب get/post * param path * api path * param param * api parameter * param mediapath * مسار voide يجب تحميل خريطة <string ، string> param ، string mediapath ، عنوان السلسلة ، مقدمة السلسلة) رمي الاستثناء {string result = null ؛ url url = url جديد (setParmas (param ، path ، "")) ؛ OutputStream Output = null ؛ datainputStream inputStream = null ؛ حاول {file file = ملف جديد (MediaPath) ؛ if (! file.isfile () ||! file.exists ()) {رمي ioException جديد ("الملف غير موجود") ؛ } httpurlConnection con = (httpurlConnection) url.openconnection () ؛ consetDoInput (صواب) ؛ consetDooutput (صواب) ؛ consetuseCaches (false) ؛ Con.SetRequestMethod (SystemConfig.post_method) ؛ . Con.SetRequestProperty ("charset" ، SystemConfig.default_character_encoding) ؛ // تعيين حدود سلسلة الحدود = "-----------" System.CurrentTimeMillis () ؛ Con.SetRequestProperty ("نوع المحتوى" ، "multipart/form-data ؛ boundary =" + boundary) ؛ // طلب معلومات الجسم // الجزء 1 الإخراج = جديد dataOutputStream (con.getOutputStream ()) ؛ ioutils.write (("-" + حدود + "/r/n").getBytes(systemConfig.default_character_encoding) ، الإخراج) ؛ ioutils.write (("disposition content: form-data ؛ name =/" media/"؛ filename =/" " + file.getName () +"/"/r/n") .getBytes () ، output) ؛ ioutils.write ("نوع المحتوى: الفيديو/mp4/r/n/r/n" .getBytes () ، الإخراج) ؛ // file body part // ادفع الملف إلى عنوان URL عن طريق دفق الملف inputStream = جديد datainputStream (FileInputStream جديد (ملف)) ؛ ioutils.copy (inputStream ، الإخراج) ؛ // إنهاء الجزء ioutils.write (("-" + حدود + "/r/n").getBytes(systemConfig.default_character_encoding) ، الإخراج) ؛ ioutils.write ("disposition content: form-data ؛ name =/" description/"؛/r/n/n" .getBytes (SystemConfig.default_character_encoding) ، output) ؛ ioutils.write (("{/" title/":/" " + title +"/"،/" introduction/":/" " + introduction +"/"}") .getBytes (SystemConfig.default_character_encoding) ، output) ؛ ioutils.write (("/r/n--" + حدود + "-/r/n/r/n"). getBytes (SystemConfig.default_character_encoding) ، الإخراج) ؛ output.flush () ؛ النتيجة = inputStreamToString (con.getInputStream ()) ؛ } catch (malformedurlexception e) {e.printStackTrace () ؛ } catch (protocolexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {رمي ioException جديد ("قراءة خطأ البيانات") ؛ } أخيرًا {ioutils.closequietly (الإخراج) ؛ ioutils.closequietly (inputStream) ؛ } نتيجة الإرجاع ؛ ) Throws استثناء */ سلسلة ثابتة عامة httpsuploadvideomedia (طريقة السلسلة ، مسار السلسلة ، خريطة <string ، string> param ، string mediapath ، عنوان السلسلة ، مقدمة السلسلة ، int conntime ، int readtime) رمي الاستثناء {string result = null ؛ url url = url جديد (setParmas (param ، path ، "")) ؛ OutputStream Output = null ؛ bufferedInputStream inputStream = null ؛ جرب {String Boundary = "----" ؛ httpurlConnection conn = getConnection (method ، url) ؛ conn.setConnectTimeOut (conntime == 0؟ default_conntime: conntime) ؛ conn.setReadTimeout (readtime == 0؟ default_upload_readtime: readtime) ؛ conn.setRequestProperty ("نوع المحتوى" ، "multipart/form-data ؛ boundary =" + boundary) ؛ الإخراج = conn.getOutputStream () ؛ url mediaurl = عنوان URL جديد (MediaPath) ؛ if (mediaUrl! = null) {httpurlConnection mediaConn = (httpurlConnection) mediaurl.openconnection () ؛ mediaConn.setDooutput (صواب) ؛ 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 (("-" + حدود + "/r/n"). getBytes () ، الإخراج) ؛ ioutils.write (("disposition content: form-data ؛ name =/" media/"؛ filename =/" " + getFilename (mediaPath) +"/"/r/n"). getBytes () ، output) ؛ ioutils.write ("نوع المحتوى: الفيديو/mp4/r/n/r/n" .getBytes () ، الإخراج) ؛ inputStream = جديد bufferedInputStream (mediaConn.getInputStream ()) ؛ ioutils.copy (inputStream ، الإخراج) ؛ // إنهاء الجزء ioutils.write (("-" + حدود + "/r/n").getBytes(systemConfig.default_character_encoding) ، الإخراج) ؛ ioutils.write ("disposition content: form-data ؛ name =/" description/"؛/r/n/n" .getBytes (SystemConfig.default_character_encoding) ، output) ؛ ioutils.write (("{/" title/":/" " + title +"/"،/" introduction/":/" " + introduction +"/"}") .getBytes (SystemConfig.default_character_encoding) ، output) ؛ ioutils.write (("/r/n--" + حدود + "-/r/n/r/n"). getBytes (SystemConfig.default_character_encoding) ، الإخراج) ؛ MediConn.Disconnect () ؛ // الحصول على نتيجة دفق الإدخال = inputStreamToString (conn.getInputStream ()) ؛ }} catch (malformedurlexception e) {e.printStackTrace () ؛ } catch (protocolexception e) {E.PrintStackTrace () ؛ } catch (ioException e) {رمي ioException جديد ("قراءة خطأ البيانات") ؛ } أخيرًا {ioutils.closequietly (الإخراج) ؛ ioutils.closequietly (inputStream) ؛ } نتيجة الإرجاع ؛ }ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.