微信上傳永久素材接口開發(一)

最近幫朋友開發一個微信內容管理平臺,想要利用這個平臺上傳圖片或者視頻資源到微信平臺。看了一下微信的開發文檔,發現微信對於上傳永久素材這個接口,給出的文檔太過簡略,而且提供的樣例也不是代碼的方式,只給了一個curl的命令,用法倒是簡單,但是用JAVA代碼去掉用curl命令還是有諸多的不方便的。如是,考慮能不能用JAVA代碼來模擬這個curl命令。

百度了一下,發現似乎有不少人遇到這個問題,好多人都在問該如何利用JAVA代碼上傳永久素材。

好在,確實找到了一個代碼,能夠上傳視頻格式的永久素材,原文地址如下:http://www.lanrenjz.com/news/show-1776.html

        代碼如下:

     

public static String postFile(String url, String filePath,
String title,String introduction) {
File file = new File(filePath);
if(!file.exists())
return null;
String result = null;
try {
URL url1 = new URL(url); 
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(30000);  
            conn.setDoOutput(true);  
            conn.setDoInput(true);  
            conn.setUseCaches(false);  
            conn.setRequestMethod("POST"); 
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("Cache-Control", "no-cache");
            String boundary = "-----------------------------"+System.currentTimeMillis();
            conn.setRequestProperty("Content-Type", "multipart/form-data; boundary="+boundary);
            
OutputStream output = conn.getOutputStream();
output.write(("--" + boundary + "\r\n").getBytes());
output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName()).getBytes());  
output.write("Content-Type: video/mp4 \r\n\r\n".getBytes());
        byte[] data = new byte[1024];
        int len =0;
        FileInputStream input = new FileInputStream(file);
while((len=input.read(data))>-1){
output.write(data, 0, len);
}
output.write(("--" + boundary + "\r\n").getBytes());
output.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes());
output.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}",title,introduction).getBytes());
output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes());
output.flush();
output.close();
input.close();
InputStream resp = conn.getInputStream();
StringBuffer sb = new StringBuffer();
while((len= resp.read(data))>-1)
sb.append(new String(data,0,len,"utf-8"));
resp.close();
result = sb.toString();
System.out.println(result);
} catch (ClientProtocolException e) {
logger.error("postFile,不支持http協議",e);
} catch (IOException e) {
logger.error("postFile數據傳輸失敗",e);
}
logger.info("{}: result={}",url,result);
return result;
}

public static void main(String[] args) {
String url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token="
+ "U_0AIUrkfmVk0LXlaGu0lx5CXx-_4&type=video";
postFile(url, "/Users/jlusoft/Desktop/test.mp4","test","dfd");
}

拿來一試,果然可行。

下一篇:http://blog.csdn.net/oarsman/article/details/51538328

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章