一直在用java来做微信的二次开发,经过一段时间的沉淀总算有了一点门路。其实用java这种强大的语言来做微信的二次开发是很简单的事情。只要解决了加密、https请求的发送、xml的解析这些基本的操作后,用java来进行微信二次开发就变的容易了很多。

这里我主要上传一个用httpclient来实现多媒体素材上传的例子。当然也可以使用urlconnection来实现该功能。但是httpclient要简单的多也省心的多。废话不错,直接上代码了,代码注释很详细。

private static String up_temporary_url = "https://api.weixin.qq.com/cgi-bin/media/upload";
public static void httpsClient() throws Exception {// 获得utf-8编码的mbuilderMultipartEntityBuilder mBuilder = get_COMPATIBLE_Builder("UTF-8");/*** 原生的微信使用的url是https://api.weixin.qq.com/cgi-bin/media/upload?* access_token=##ACCESS_TOKEN##&type=##TYPE##* 一般都会使用这个把参数直接携带在url中。我个人不喜欢这样,因为既然使用了httpclient,完全可以把参数* 设置在我们的body体中。所以我们使用的url是这样的* https://api.weixin.qq.com/cgi-bin/media/upload 然后通过在body体中设置参数来设置* access_token和type这两个字段* * */// 设置type,我这里用一个缩略图来做实验,所以type是thumbmBuilder.addTextBody("type", "thumb");// 设置access_token,mBuilder.addTextBody("access_token", getAccessToken());// 这里就是我要上传到服务器的多媒体图片mBuilder.addBinaryBody("media", getFile("d:/test.jpg"),ContentType.APPLICATION_OCTET_STREAM, getFile("d:/test.jpg").getName());// 建造我们的http多媒体对象HttpEntity he = mBuilder.build();// 建立一个sslcontext,这里我们信任任何的证书。SSLContext context = getTrustAllSSLContext();// 建立socket工厂SSLConnectionSocketFactory factory = new SSLConnectionSocketFactory(context);// 建立连接器CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(factory).build();try {// 得到一个post请求的实体HttpPost post = getMultipartPost();// 给请求添加参数post.setEntity(he);// 执行请求并获得结果CloseableHttpResponse reponse = client.execute(post);try {// 获得返回的内容HttpEntity entity = reponse.getEntity();// 输出System.out.println(EntityUtils.toString(entity));// 消耗实体EntityUtils.consume(entity);} finally {// 关闭返回的reponsereponse.close();}} finally {// 关闭clientclient.close();}}
 private static String getBoundaryStr(String str) {return "------------" + str;}private static File getFile(String path) {return new File(path);}private static MultipartEntityBuilder get_COMPATIBLE_Builder(String charSet) {MultipartEntityBuilder result = MultipartEntityBuilder.create();result.setBoundary(getBoundaryStr("7da2e536604c8")).setCharset(Charset.forName(charSet)).setMode(HttpMultipartMode.BROWSER_COMPATIBLE);return result;}private static String getAccessToken() {// 这里返回一个access_token,我在实际项目中是使用redis来缓存起来的。这里就直接返回了,要改成自己的哦return "PFKLPAJ6HqxylpsKM7CWUoFoKeQlvLRRfArUmR9QEji2uWIEh9qsbGQ0eEih8gsnKrtjoCME_PgPV2ut_Wt3XTNmoJLDycpjtID0KItfVk";}private static String getUrl() {return up_temporary_url;}private static HttpPost getMultipartPost() {/* 这里设置一些post的头部信息,具体求百度吧 */HttpPost post = new HttpPost(getUrl());post.addHeader("Connection", "keep-alive");post.addHeader("Accept", "*/*");post.addHeader("Content-Type", "multipart/form-data;boundary="+ getBoundaryStr("7da2e536604c8"));post.addHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");return post;}private static SSLContext getTrustAllSSLContext() throws Exception {SSLContext context = SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() {@Overridepublic boolean isTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {// 这一句就是信任任何的证书,当然你也可以去验证微信服务器的真实性return true;}}).build();return context;}

这是最后返回的结果,主要就是那个thumb_media_id了,用这个就可以给用户发送图片消息了。

使用httpclient4.3.2来实现微信临时素材的上传相关推荐

  1. 使用微信临时素材库上传与获取图片

    在开发微信小程序的客服,发送客服消息时,由于使用到了图片,于是用到了微信的临时素材库 上传图片 调用以下接口: POST https://api.weixin.qq.com/cgi-bin/media ...

  2. 微信临时素材接口_在接口中表达临时性

    微信临时素材接口 When interacting with today's graphic user interfaces (GUI), we experience a sense of reali ...

  3. php 使用curl发送图片素材到微信临时素材库

    //图片素材保存到微信临时素材库并返回mediaIDaprotected function sendImgtoWechat($username = ''){$saveDir = ROOTPATH . ...

  4. 微信小程序上传接口php,微信小程序API 上传、下载

    微信小程序API 上传.下载 wx.uploadFile(OBJECT) 将本地资源上传到开发者服务器.如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口 ...

  5. 微信jssdk多图上传

    在微信里面开发,我们可以使用微信jssdk 的图片上传 思路基本上是 手机选中图片,上传到微信服务器,加入临时素材库(好像三天就过期了) 然后再服务端去微信的服务器 把图片下载到本地. 如果有自己的c ...

  6. Uni-app 微信小程序头像上传

    uni-app 提供了很多图片处理的Api,比如 uni.chooseImage()方法,但基本都是本地.拍照上传,本地临时.持久存储,要想跟服务端交互,就需要使用上传Api uni.uploadFi ...

  7. 微信公众号——永久素材的上传

    微信公众号永久素材的上传 思路:1.需要上传到本地(因为后面需要用的本地的绝对路径 2.上传到微信服务器 3.添加信息到本地数据库 一.上传图片到本地 文件上传的方法 以下是我的代码 首先更改文件上传 ...

  8. 上传声音 微信小程序_SpringBoot开发案例之微信小程序录音上传

    前言 书接上回的<SpringBoot开发案例之微信小程序文件上传>,正常的业务流程是,口语测评需要学生通过前端微信小程序录入一段音频,通过调用第三方音频处理服务商进行评分,然后服务端对原 ...

  9. 微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题

    微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题 参考文章: (1)微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题 (2)https://www.cnblogs.com/co ...

最新文章

  1. sqlite数据库测试类基本使用
  2. Error In Work
  3. idea的debug调试
  4. 一份厘清「数据指标」问题的清单
  5. Nginx+Tomcat负载均衡
  6. 十份图表改变您对大数据增长的观点
  7. 基于visual Studio2013解决面试题之0902内存拷贝
  8. java 蓝桥杯算法训练 奇变的字符串(题解)
  9. python pdb调试快捷键,Python调试工具pdb使用详解
  10. 苹果6发布时间_iPhone12promax11月6日几点预售 11.6苹果12mini预售时间
  11. 如何从一行输入的字符串中基于空格切割出单词
  12. 机器学习入门之——动手演示线性模型无法表示的XOR问题
  13. 关于node中的板块问题
  14. 计算机机考试卷分析,考试试卷分析与反思
  15. java 水晶报表教程_水晶报表 (Crystal Reports 2008)的配置
  16. java 制作word模板
  17. 计算机专业专业课代号408,计算机408有多难
  18. 使用matlab时括号附近出现红色波浪线“使用的MATLAB语法可能无效”提示
  19. 三年级下册计算机知识点,【北师大】三年级下册语文各单元知识点归纳
  20. Keil5下载烧录错误常见问题

热门文章

  1. 4)lsof linux命令,***Linux命令实时监测系统(top,htop,iotop,lsof,tcpdump,netstat,vmstat,iostat)...
  2. ❤️六W字《计算机基础知识》(四)(建议收藏)❤️
  3. 2014 java面试题_2014 java面试题 (答案)
  4. python调用cmd命令释放端口_Python——cmd调用(os.system阻塞处理)(多条命令执行)...
  5. 异常体系----java
  6. md5 java 工具类_Java实现一个MD5工具类
  7. mysql+json插入_MySQL对JSON数据的增删改查
  8. Java System类详解
  9. 计算机基础 英文版本,计算机基础,全英文版的.ppt
  10. openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过