微信素材管理——批量添加格带、修改永久素材

新增永久素材

除了3天就會失效的臨時素材外撤缴,開發(fā)者有時需要永久保存一些素材,屆時就可以通過本接口新增永久素材叽唱。

最近更新屈呕,永久圖片素材新增后,將帶有URL返回給開發(fā)者棺亭,開發(fā)者可以在騰訊系域名內(nèi)使用(騰訊系域名外使用虎眨,圖片將被屏蔽)。

請注意:

  1. 新增的永久素材也可以在公眾平臺官網(wǎng)素材管理模塊中看到

  2. 永久素材的數(shù)量是有上限的镶摘,請謹慎新增嗽桩。圖文消息素材和圖片素材的上限為5000,其他類型為1000

  3. 素材的格式大小等要求與公眾平臺官網(wǎng)一致凄敢。具體是碌冶,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式贡未,語音大小不超過5M种樱,長度不超過60秒(公眾平臺官網(wǎng)可以在文章中插入小于30分鐘的語音,但這些語音不能用于群發(fā)等場景俊卤,只能放在文章內(nèi)嫩挤,這方面接口暫不支持),支持mp3/wma/wav/amr格式

  4. 調(diào)用該接口需https協(xié)議


接口調(diào)用請求說明

http請求方式: POST
https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN

調(diào)用示例

{
  "articles": [{
       "title": TITLE, //標題
       "thumb_media_id": THUMB_MEDIA_ID, //圖文消息的封面圖片素材id(必須是永久mediaID)
       "author": AUTHOR, //作者
       "digest": DIGEST, //圖文消息的摘要
       "show_cover_pic": SHOW_COVER_PIC(0 / 1), //是否顯示封面
       "content": CONTENT, //圖文消息的具體內(nèi)容
       "content_source_url": CONTENT_SOURCE_URL //圖文消息的原文地址
    },
    //若新增的是多圖文素材消恍,則此處應有幾段articles結(jié)構岂昭,最多8段
 ]
}

返回說明

{
   "media_id":MEDIA_ID //返回的即為新增的圖文消息素材的media_id。
}

以上是微信開發(fā)者文檔里面的原文


下面講述一下我在做添加素材是遇到的問題和解決方案僅供參考:

  1. THUMB_MEDIA_ID(圖文消息的封面圖片素材id)是哪里來的狠怨?
  2. 接口調(diào)用請求是不是用普通的爬蟲抓取就可以抓取到约啊?
首先我們來解決第一個問題:

接口調(diào)用請求說明

通過POST表單來調(diào)用接口邑遏,表單id為media,包含需要上傳的素材內(nèi)容恰矩,有filename记盒、filelength、content-type等信息外傅。請注意:圖片素材將進入公眾平臺官網(wǎng)素材管理模塊中的默認分組纪吮。
http請求方式: POST,需使用https[https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN](https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN)調(diào)用示例(使用curl命令萎胰,用FORM表單方式新增一個其他類型的永久素材碾盟,curl命令的使用請自行查閱資料)
```
**參數(shù)說明:**
![](http://upload-images.jianshu.io/upload_images/2509925-2bccff6a5a0fdabf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
以上是[微信開發(fā)者文檔](https://mp.weixin.qq.com/wiki/10/10ea5a44870f53d79449290dfd43d006.html)里面的原文

當我看到這里的時候,感覺還是一頭霧水:首先參數(shù)是以什么形式發(fā)送到微信服務器做請求參數(shù)的技竟,其二media(form-data中媒體文件標識)是直接傳一個file文件冰肴?

 然而我按照這個思路寫啦好多代碼都沒有解決掉,因為從同到尾都錯了榔组;最后我還是費了好大時間找到了微信的c#SDK借用了里面封裝的方法來解決了這個問題:
> ###### 具體實現(xiàn)
要用微信SDK里面的方法首先需要引用dll文件熙尉,在我的百度云盤里面有http://pan.baidu.com/s/1geO3bYN 。
```
 //上傳圖片調(diào)用方法
 var uploadResult = Senparc.Weixin.MP.AdvancedAPIs.Media.MediaApi.UploadForeverMedia(token, imagePath);
返回一個類:
striing THUMB_MEDIA_ID = uploadResult.media_id;
```
到這里已經(jīng)獲得到了THUMB_MEDIA_ID
接下來就是調(diào)用接口去上傳素材:著這里我用自己寫的抓取沒成功瓷患,然后調(diào)用的是SDK里面的具體實現(xiàn)如下:
``` 
//首先按照格式拼接json
string json ="{\"articles\": [{\"title\":\"標題\",\"thumb_media_id\":\"THUMB_MEDIA_ID\",\"author\":\"作者\",\"digest\":\"圖文消息的摘要\",\"show_cover_pic\": \"1\",\"content\":\"圖文消息的具體內(nèi)容\",\"content_source_url\": \"圖文消息的原文地址\"},{\"title\":\"標題2\",\"thumb_media_id\":\"THUMB_MEDIA_ID\",\"author\":\"作者\",\"digest\":\"圖文消息的摘要\",\"show_cover_pic\": \"1\",\"content\":\"圖文消息的具體內(nèi)容\",\"content_source_url\": \"圖文消息的原文地址\"}]}";
string result = HttpService.Post(json, "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=" + accessToken + "", false, 60);
正確情況下的返回JSON數(shù)據(jù)包示例如下
{"errcode":0,"media_id":"**************"}
```

> ###### POST方法

``` 
public static string Post(string xml, string url, bool isUseCert, int timeout)
{
    System.GC.Collect();//垃圾回收骡尽,回收沒有正常關閉的http連接

    string result = "";//返回結(jié)果

    HttpWebRequest request = null;
    HttpWebResponse response = null;
    Stream reqStream = null;

    try
    {
        //設置最大連接數(shù)
        ServicePointManager.DefaultConnectionLimit = 200;
        //設置https驗證方式
        if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
        {
            ServicePointManager.ServerCertificateValidationCallback =
                    new RemoteCertificateValidationCallback(CheckValidationResult);
        }

        /***************************************************************
        * 下面設置HttpWebRequest的相關屬性
        * ************************************************************/
        request = (HttpWebRequest)WebRequest.Create(url);

        request.Method = "POST";
        request.Timeout = timeout * 1000;

        //設置代理服務器
        //WebProxy proxy = new WebProxy();                          //定義一個網(wǎng)關對象
        //proxy.Address = new Uri(WxPayConfig.PROXY_URL);              //網(wǎng)關服務器端口:端口
        //request.Proxy = proxy;

        //設置POST的數(shù)據(jù)類型和長度
        request.ContentType = "text/xml";
        byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
        request.ContentLength = data.Length;

        //是否使用證書
        if (isUseCert)
        {
            string path = HttpContext.Current.Request.PhysicalApplicationPath;
            X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);
            request.ClientCertificates.Add(cert);
        }

        //往服務器寫入數(shù)據(jù)
        reqStream = request.GetRequestStream();
        reqStream.Write(data, 0, data.Length);
        reqStream.Close();

        //獲取服務端返回
        response = (HttpWebResponse)request.GetResponse();

        //獲取服務端返回數(shù)據(jù)
        StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
        result = sr.ReadToEnd().Trim();
        sr.Close();
    }
    catch (System.Threading.ThreadAbortException e)
    {
        System.Threading.Thread.ResetAbort();
    }
    catch (WebException e)
    {
        if (e.Status == WebExceptionStatus.ProtocolError)
        {
        } 
    }
    catch (Exception e)
    { 
    }
    finally
    {
        //關閉連接和流
        if (response != null)
        {
            response.Close();
        }
        if(request != null)
        {
            request.Abort();
        }
    }
    return result;}
  

批量修改永久素材

大多數(shù)人在第一次做批量修改素材是都會犯一個致命的錯誤,那就是在拼接參數(shù)的時候故意拼成JSON格式擅编,導致請求服務器時返回錯誤信息攀细;其實在拼接字符串時只要按格式拼接對字符串就一切OK了:

{
  "media_id":MEDIA_ID,
  "index":INDEX,
  "articles": {
       "title": TITLE,
       "thumb_media_id": THUMB_MEDIA_ID,
       "author": AUTHOR,
       "digest": DIGEST,
       "show_cover_pic": SHOW_COVER_PIC(0 / 1),
       "content": CONTENT,
       "content_source_url": CONTENT_SOURCE_URL
    }, {
       "title": TITLE,
       "thumb_media_id": THUMB_MEDIA_ID,
       "author": AUTHOR,
       "digest": DIGEST,
       "show_cover_pic": SHOW_COVER_PIC(0 / 1),
       "content": CONTENT,
       "content_source_url": CONTENT_SOURCE_URL
    }
}
```
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市爱态,隨后出現(xiàn)的幾起案子谭贪,更是在濱河造成了極大的恐慌,老刑警劉巖锦担,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俭识,死亡現(xiàn)場離奇詭異,居然都是意外死亡洞渔,警方通過查閱死者的電腦和手機套媚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磁椒,“玉大人堤瘤,你說我怎么就攤上這事〗郏” “怎么了本辐?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我慎皱,道長老虫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任茫多,我火速辦了婚禮祈匙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘地梨。我一直安慰自己菊卷,他們只是感情好缔恳,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布宝剖。 她就那樣靜靜地躺著,像睡著了一般歉甚。 火紅的嫁衣襯著肌膚如雪万细。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天纸泄,我揣著相機與錄音赖钞,去河邊找鬼。 笑死聘裁,一個胖子當著我的面吹牛雪营,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衡便,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼献起,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镣陕?” 一聲冷哼從身側(cè)響起谴餐,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呆抑,沒想到半個月后岂嗓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡鹊碍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年厌殉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侈咕。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡公罕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乎完,到底是詐尸還是另有隱情熏兄,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站摩桶,受9級特大地震影響桥状,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜硝清,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一辅斟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芦拿,春花似錦士飒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缓苛,卻和暖如春芳撒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背未桥。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工笔刹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冬耿。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓舌菜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親亦镶。 傳聞我的和親對象是個殘疾皇子日月,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容