开发者社区> 烟火_> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 一、微信上传素材接口简介   1、请求:该请求是使用post提交地址为:    https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN   其中ACCESS_TOKEN是我们动态获取的。
+关注继续查看

一、微信上传素材接口简介

  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。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java基础-接口
在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口与类相似点:
22 0
【Java】接口的详解
一、前言 二、接口 接口的格式 三、接口的特点 接口的使用 四、类与接口的关系 接口多重继承的好处
60 0
java IO接口
package IO;   import java.io.File; import java.text.SimpleDateFormat;   public class FileTest {        public static void main(String[] args) {             SimpleDateForm
1080 0
Java微信开发之现金红包接口
<div class="markdown_views"> <h1 id="1接口文档">1、接口文档</h1> <p><a href="https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5">https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.p
2689 0
java接口
接口中常量的修饰关键字:public,static,final(常量)函数的修饰关键字:public,abstract如果没有写全,系统在编译时会自动加上接口中的所有成员都是public接口中的方法,都是抽象方法, * 接口是不可以创建对象,因为有抽象方法;子类如果只实现部分接口的抽象方法,则子类是...
542 0
java微信接口之三—上传多媒体文件
一、微信上传多媒体接口简介   1、请求:该请求是使用post提交from来实现的,我们可以在网页上进行表单提交来实现。地址为:    http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE   其中ACCESS_TOKEN是我们动态获取的,TYPE是 媒体文件类型。
1140 0
java微信接口之二—获取用户组
一、微信获取用户组接口简介   1、请求   该请求也是GET方式请求。请求的url格式如下:   https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN   其中ACCESS_TOKEN是之前我们获取到的。
729 0
JAVA多线程学习Runnable接口
JAVA不允许一个类继承自多个类,为了解决这个问题,JAVA提供了java.lang.Runnable接口,它有一个run()方法: 1 package runimpl; 2 public class Machine implements Runnable{ 3 private ...
513 0
+关注
烟火_
从事java开发多年
113
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载