最近公司要做微信方面的开发,今天说下,如何使用微信的素材管理的接口,这里主要讲下素材的上传接口,下载之类的比较简单(就是解析json而已),今天会把所有的素材上传写道一个方法里供大家参考,关于上传的接口文档我就不粘贴了,直接上代码!

/*** 这里说下,在上传视频素材的时候,微信说不超过20M,我试了下,超过10M调通的可能性都比较小,建议大家上传视频素材的大小小于10M比交好* @param accessToken* @param file  上传的文件* @param title  上传类型为video的参数* @param introduction 上传类型为video的参数*/public void uploadPermanentMedia2(String accessToken,File file,String title,String introduction) {try {//这块是用来处理如果上传的类型是video的类型的JSONObject j=new JSONObject();j.put("title", title);j.put("introduction", introduction);// 拼装请求地址String uploadMediaUrl = "http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=##ACCESS_TOKEN##";uploadMediaUrl = uploadMediaUrl.replace("##ACCESS_TOKEN##",accessToken);URL url = new URL(uploadMediaUrl);String result = null;long filelength = file.length();String fileName=file.getName();String suffix=fileName.substring(fileName.lastIndexOf("."),fileName.length());String type="video/mp4"; //我这里写死/***  你们需要在这里根据文件后缀suffix将type的值设置成对应的mime类型的值*/HttpURLConnection con = (HttpURLConnection) url.openConnection();con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式con.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false); // post方式不能使用缓存// 设置请求头信息con.setRequestProperty("Connection", "Keep-Alive");con.setRequestProperty("Charset", "UTF-8");// 设置边界,这里的boundary是http协议里面的分割符,不懂的可惜百度(http 协议 boundary),这里boundary 可以是任意的值(111,2222)都行String BOUNDARY = "----------" + System.currentTimeMillis();con.setRequestProperty("Content-Type","multipart/form-data; boundary=" + BOUNDARY);// 请求正文信息// 第一部分:StringBuilder sb = new StringBuilder();//这块是post提交type的值也就是文件对应的mime类型值sb.append("--"); // 必须多两道线 这里说明下,这两个横杠是http协议要求的,用来分隔提交的参数用的,不懂的可以看看http 协议头sb.append(BOUNDARY);sb.append("\r\n");sb.append("Content-Disposition: form-data;name=\"type\" \r\n\r\n"); //这里是参数名,参数名和值之间要用两次sb.append(type+"\r\n"); //参数的值//这块是上传video是必须的参数,你们可以在这里根据文件类型做if/else 判断sb.append("--"); // 必须多两道线sb.append(BOUNDARY);sb.append("\r\n");sb.append("Content-Disposition: form-data;name=\"description\" \r\n\r\n");sb.append(j.toString()+"\r\n");/*** 这里重点说明下,上面两个参数完全可以卸载url地址后面 就想我们平时url地址传参一样,* http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=##ACCESS_TOKEN##&type=""&description={} 这样,如果写成这样,上面的* 那两个参数的代码就不用写了,不过media参数能否这样提交我没有试,感兴趣的可以试试*/sb.append("--"); // 必须多两道线sb.append(BOUNDARY);sb.append("\r\n");//这里是media参数相关的信息,这里是否能分开下我没有试,感兴趣的可以试试sb.append("Content-Disposition: form-data;name=\"media\";filename=\""+ fileName + "\";filelength=\"" + filelength + "\" \r\n");sb.append("Content-Type:application/octet-stream\r\n\r\n");System.out.println(sb.toString());byte[] head = sb.toString().getBytes("utf-8");// 获得输出流OutputStream out = new DataOutputStream(con.getOutputStream());// 输出表头out.write(head);// 文件正文部分// 把文件已流文件的方式 推入到url中DataInputStream in = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}in.close();// 结尾部分,这里结尾表示整体的参数的结尾,结尾要用"--"作为结束,这些都是http协议的规定byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线out.write(foot);out.flush();out.close();StringBuffer buffer = new StringBuffer();BufferedReader reader = null;// 定义BufferedReader输入流来读取URL的响应reader = new BufferedReader(new InputStreamReader(con.getInputStream()));String line = null;while ((line = reader.readLine()) != null) {buffer.append(line);}if (result == null) {result = buffer.toString();}// 使用JSON-lib解析返回结果JSONObject jsonObject = JSONObject.fromObject(result);if (jsonObject.has("media_id")) {System.out.println("media_id:"+jsonObject.getString("media_id"));} else {System.out.println(jsonObject.toString());}System.out.println("json:"+jsonObject.toString());} catch (IOException e) {e.printStackTrace();} finally {}}

上面就是通用的上传素材的方法,大体就这样,我亲测过,时间(2015-08-05),除了图片素材返回为media_id和url 其他素材都返回media

java微信公众平台开发四(上传素材)相关推荐

  1. Java微信公众平台开发(四)--回复消息的分类及实体的创建

    转自:http://www.cuiyongzhi.com/post/42.html 前面有说道对接收到微信服务器消息后对消息的分类,当时主要分为普通消息和事件消息,这里我们要讲述的是我们在给用户回复的 ...

  2. 微信公众平台开发视频上传

    /**      * 视频上传      *       * @param filePath 文件路径      * @param accessToken accessToken      * @re ...

  3. Java微信公众平台开发(一)--接入微信公众平台

    转载自崔用志博客:http://www.cuiyongzhi.com/ 前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我 ...

  4. Java微信公众平台开发(一)——接入微信公众平台

    前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接! (一)接入流程解析 在 ...

  5. Java微信公众平台开发--番外篇,对GlobalConstants文件的补充

    转自:http://www.cuiyongzhi.com/post/63.html 之前发过一个[微信开发]系列性的文章,也引来了不少朋友观看和点评交流,可能我在写文章时有所疏忽,对部分文件给出的不是 ...

  6. 微信信息回复 java,微信公众平台开发中使用Java如何实现一个消息回复功能

    微信公众平台开发中使用Java如何实现一个消息回复功能 发布时间:2020-11-17 16:11:11 来源:亿速云 阅读:82 作者:Leah 本篇文章给大家分享的是有关微信公众平台开发中使用Ja ...

  7. Java微信公众平台开发_03_消息管理之被动回复消息

    GitHub源码:https://github.com/shirayner/weixin_gz 一.本节要点 1.回调url 上一节,我们启用服务器配置的时候,填写了一个服务器地址(url),如下图, ...

  8. Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

    转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...

  9. Java微信公众平台开发(十)--微信自定义菜单的创建实现

    转自:http://www.cuiyongzhi.com/post/48.html 自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自 ...

最新文章

  1. Bootstrap-table学习笔记(二)——前后端分页模糊查询
  2. NameNode机制和DataNode机制
  3. android 启动service报错,Android小经验
  4. windows 搭建python 虚拟环境 写程序_Sublime下配置python编译环境及搭建虚拟环境:(windows下大致相同)...
  5. sklearn中SVM调参说明
  6. c语言如何删除数组中的某一个元素_数据结构之线性表高效删除重复元素
  7. 健康医疗数据库建设亟需“万象更新”式变革
  8. mysql order by random,sql-MySQL:ORDER BY RAND()的替代方法
  9. 机器学习3/100天-多特征线形回归
  10. Google Kick Start 2018 Round C Planet Distance
  11. C# mvc4.0 MD5测试
  12. 开机就提示“请安装TCP/IP协议,error=10106”的解决的方法
  13. 无人驾驶真体验!老百姓都能打得到的“共享无人车”来了
  14. hdu 5234 Happy birthday
  15. 【word操作】论文页眉页脚设置
  16. memcpy函数优化及DMA对比
  17. python 矩阵求逆
  18. 苹果在天猫新开旗舰店,狙击小程序还是为拿下中国市场?
  19. 华为服务器不做阵列怎么进系统,服务器不做阵列能装系统
  20. 西门子PLC和变频器控制恒压供水案例一控四

热门文章

  1. C调java_ffmpeg系统学习视频9-5 C调Java的方法.mp4
  2. 图像对比算法有哪些,图像对比算法是什么
  3. 2.Moveit moveit_setup_assistant配置助手使用
  4. mysql 闪存,高性能MySQL:什么时候应该使用闪存
  5. 纯JS脚本1k大小的3D玫瑰
  6. Web3 游戏中的创造者经济:从游戏到平台 用户生成内容的挑战
  7. 全国地图json数据/省级数据/市级数据
  8. 【无标Unity基于ShaderLab实现光照系统(着色器代码实现小结)
  9. memory:allocator
  10. android qq聊天背景图片,手机qq聊天背景图片【突破指南】