java微信接口之四—上傳素材


一、微信上傳素材接口簡介

  1、請求:該請求是使用post提交地址為: 

  https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN

  其中ACCESS_TOKEN是我們動態獲取的

  發送的數據:

  {"articles":[

  {

"thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
"author":"xxx",
"title":"Happy Day",
"content_source_url":"www.qq.com",
"content":"content",
"digest":"digest",
"show_cover_pic":"1"
},
{
"thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
"author":"xxx",
"title":"Happy Day",
"content_source_url":"www.qq.com",
"content":"content",
"digest":"digest",
"show_cover_pic":"0"
}

     ]
  }

articles,圖文消息,一個圖文消息支持1到10條圖文
thumb_media_id,圖文消息縮略圖的media_id,可以在基礎支持-上傳多媒體文件接口(java微信接口之三—上傳多媒體文件)中獲得
author,圖文消息的作者
title,圖文消息的標題
content_source_url,在圖文消息頁面點擊“閱讀原文”后的頁面
content,圖文消息頁面的內容,支持HTML標簽
digest,圖文消息的描述
show_cover_pic,是否顯示封面,1為顯示,0為不顯示

  2、響應:該響應也是以json方式返回的

  正確的時候返回的數據:

{
"type":"news",
"media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",
"created_at":1391857799
}

   type為媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),次數為news,即圖文消息,

  media_id就是上傳素材后素材的id,

  created_at表示創建的時間。

  錯誤的時候返回的數據:{"errcode":40004,"errmsg":"invalid media type"}

  errcode,為錯誤代碼,errmsg為錯誤信息

  具體api可查看:http://mp.weixin.qq.com/wiki/index.php?title=%E9%AB%98%E7%BA%A7%E7%BE%A4%E5%8F%91%E6%8E%A5%E5%8F%A3

二、關於java代碼的調用

  該接口的調用與java微信接口之三—上傳多媒體文件一樣,需要使用到commons-httpclient。其中數據是構造成json數據后,放在post方法請求體里面發送給服務器端。

三、代碼實現

  1 import java.io.File;
  2 import java.util.ArrayList;
  3 import java.util.HashMap;
  4 import java.util.List;
  5 import java.util.Map;
  6 
  7 import org.apache.commons.httpclient.methods.PostMethod;
  8 import org.apache.commons.httpclient.methods.multipart.FilePart;
  9 import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
 10 import org.apache.commons.httpclient.methods.multipart.Part;
 11 import org.apache.http.HttpEntity;
 12 import org.apache.http.HttpResponse;
 13 import org.apache.http.HttpStatus;
 14 import org.apache.http.client.HttpClient;
 15 import org.apache.http.client.methods.HttpGet;
 16 import org.apache.http.impl.client.DefaultHttpClient;
 17 import org.apache.http.util.EntityUtils;
 18 
 19 import com.google.gson.Gson;
 20 import com.google.gson.JsonArray;
 21 import com.google.gson.JsonObject;
 22 import com.google.gson.JsonParser;
 23 
 24 public class Test
 25 {
 26     public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token";// 獲取access
 27     public static final String UPLOAD_IMAGE_URL = "http://file.api.weixin.qq.com/cgi-bin/media/upload";// 上傳多媒體文件
 28     public static final String UPLOAD_FODDER_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadnews";
 29     public static final String APP_ID = "wxa549b28c24cf341e";
 30     public static final String SECRET = "78d8a8cd7a4fa700142d06b96bf44a37";
 31 
 32     /**
 33      * 上傳素材
 34      * 
 35      * @param uploadurl
 36      *            apiurl
 37      * @param access_token
 38      *            訪問token
 39      * @param data
 40      *            提交數據
 41      * @return
 42      */
 43     public static String uploadFodder(String uploadurl, String access_token,
 44             String data)
 45     {
 46         org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
 47         String posturl = String.format("%s?access_token=%s", uploadurl,
 48                 access_token);
 49         PostMethod post = new PostMethod(posturl);
 50         post
 51                 .setRequestHeader(
 52                         "User-Agent",
 53                         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0");
 54         post.setRequestHeader("Host", "file.api.weixin.qq.com");
 55         post.setRequestHeader("Connection", "Keep-Alive");
 56         post.setRequestHeader("Cache-Control", "no-cache");
 57         String result = null;
 58         try
 59         {
 60             post.setRequestBody(data);
 61             int status = client.executeMethod(post);
 62             if (status == HttpStatus.SC_OK)
 63             {
 64                 String responseContent = post.getResponseBodyAsString();
 65                 System.out.println(responseContent);
 66                 JsonParser jsonparer = new JsonParser();// 初始化解析json格式的對象
 67                 JsonObject json = jsonparer.parse(responseContent)
 68                         .getAsJsonObject();
 69                 if (json.get("errcode") == null)
 70                 {// 正確 { "type":"news", "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ","created_at":1391857799}
 71                     result = json.get("media_id").getAsString();
 72                 }
 73             }
 74         }
 75         catch (Exception e)
 76         {
 77             e.printStackTrace();
 78         }
 79         finally
 80         {
 81             return result;
 82         }
 83     }
 84 
 85     public static void main(String[] args) throws Exception
 86     {
 87         String accessToken = getToken(GET_TOKEN_URL, APP_ID, SECRET);// 獲取token在微信接口之一中獲取
 88         if (accessToken != null)// token成功獲取
 89         {
 90             System.out.println(accessToken);
 91             File file = new File("f:" + File.separator + "2000.JPG"); // 獲取本地文件
 92             String id = uploadImage(UPLOAD_IMAGE_URL, accessToken, "image",
 93                     file);// java微信接口之三—上傳多媒體文件 可獲取
 94             if (id != null)
 95             { 
 96                 //構造數據
 97                 Map map = new HashMap();
 98                 map.put("thumb_media_id", id);
 99                 map.put("author", "wxx");
100                 map.put("title", "標題");
101                 map.put("content", "測試fdsfdsfsdfssfdsfsdfsdfs");
102                 map.put("digest", "digest");
103                 map.put("show_cover_pic", "0");
104 
105                 Map map2 = new HashMap();
106                 map2.put("thumb_media_id", id);
107                 map2.put("author", "wxx");
108                 map2.put("content_source_url", "www.google.com");
109                 map2.put("title", "標題");
110                 map2.put("content", "測試fdsfdsfsdfssfdsfsdfsdfs");
111                 map2.put("digest", "digest");
112 
113                 Map map3 = new HashMap();
114                 List<Map> list = new ArrayList<Map>();
115                 list.add(map);
116                 list.add(map2);
117                 map3.put("articles", list);
118 
119                 Gson gson = new Gson();
120                 String result = gson.toJson(map3);//轉換成json數據格式
121                 String mediaId = uploadFodder(UPLOAD_FODDER_URL, accessToken,
122                         result);
123                 if (mediaId != null)
124                 {
125                     System.out.println(mediaId);
126                 }
127             }
128         }
129     }
130 }

  上傳成功就會打印該素材id。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM