微信小程序客服消息新增临时素材接口java实现
今天想在微信小程序的客服信息窗口里回复用户一个图片信息,发现还需要上传素材,但是微信文档的上传临时素材接口写的模模糊糊,无奈去百度,网上清一色的PHP实现方式,难道我穿越了?PHP已经把java给超越了?
微信接口文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/material.html#新增临时素材
言归正传,终于还是找到了一篇博客的,java实现。现摘录如下,做了小部分修改:
- /**
- * 新增临时素材
- *
- * @param fileType
- * @param filePath
- * @return
- * @throws Exception
- */
- public static JSONObject UploadMeida(String fileType, String filePath) throws Exception {
- // 返回结果
- String result = null;
- File file = new File(filePath);
- if (!file.exists() || !file.isFile()) {
- logger.info("文件不存在");
- throw new IOException("文件不存在");
- }
- String token = getToken();
- if (token == null) {
- logger.info("未获取到token");
- throw new IOException("未获取到token");
- }
- String urlString = Constants.WX_APP_MEDIA_UPLOAD.replace("ACCESS_TOKEN", token).replace("TYPE", fileType);
- URL url = new URL(urlString);
- HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
- conn.setRequestMethod("POST");// 以POST方式提交表单
- conn.setDoInput(true);
- conn.setDoOutput(true);
- conn.setUseCaches(false);// POST方式不能使用缓存
- // 设置请求头信息
- conn.setRequestProperty("Connection", "Keep-Alive");
- conn.setRequestProperty("Charset", "UTF-8");
- // 设置边界
- String BOUNDARY = "----------" + System.currentTimeMillis();
- conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
- // 请求正文信息
- // 第一部分
- StringBuilder sb = new StringBuilder();
- sb.append("--");// 必须多两条道
- sb.append(BOUNDARY);
- sb.append("\r\n");
- sb.append("Content-Disposition: form-data;name=\"media\"; filename=\"" + file.getName() + "\"\r\n");
- sb.append("Content-Type:application/octet-stream\r\n\r\n");
- logger.debug("sb:" + sb);
- // 获得输出流
- OutputStream out = new DataOutputStream(conn.getOutputStream());
- // 输出表头
- out.write(sb.toString().getBytes("UTF-8"));
- // 文件正文部分
- // 把文件以流的方式 推送道URL中
- DataInputStream din = new DataInputStream(new FileInputStream(file));
- int bytes = 0;
- byte[] buffer = new byte[1024];
- while ((bytes = din.read(buffer)) != -1) {
- out.write(buffer, 0, bytes);
- }
- din.close();
- // 结尾部分
- byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");// 定义数据最后分割线
- out.write(foot);
- out.flush();
- out.close();
- if (HttpsURLConnection.HTTP_OK == conn.getResponseCode()) {
- StringBuffer strbuffer = null;
- BufferedReader reader = null;
- try {
- strbuffer = new StringBuffer();
- reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
- String lineString = null;
- while ((lineString = reader.readLine()) != null) {
- strbuffer.append(lineString);
- }
- if (result == null) {
- result = strbuffer.toString();
- logger.info("result:" + result);
- }
- } catch (IOException e) {
- logger.error("发送POST请求出现异常!", e);
- e.printStackTrace();
- } finally {
- if (reader != null) {
- reader.close();
- }
- }
- }
- JSONObject jsonObject = JSONObject.parseObject(result);
- return jsonObject;
- }
使用的时候直接本地执行一个main方法就OK的
- /**
- * 上传素材,用于获取media_id
- * @param args
- */
- public static void main(String[] args) {
- String fileType = "image";
- String filePath = "E:/testupload/123456.jpg";
- try {
- JSONObject jsonObject = UploadMeida(fileType, filePath);
- System.err.println(jsonObject);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
其实后来这个临时素材不满足需求的,因为网上说的这种临时素材好像3天就会过期,反正微信文档是啥也没说,只说这是临时素材,囧!我想找个微信小程序的永久素材接口,然而并没有找到。只能改用图文链接回复了,把链接指向自己服务器上的一个图片。
微信小程序客服消息新增临时素材接口java实现的更多相关文章
- 微信小程序客服消息开发实战:实时在手机上接收小程序客服消息通知,以及在手机上回复
在微信小程序开发中,可以非常方便的集成客服功能,只需要一行代码便可以将用户引导至客服会话界面.这行代码就是: <button open-type="contact" bind ...
- 微信小程序客服消息实时通知之最佳实践
我们做微信小程序开发的都知道,只要在小程序页面中添加如下代码即可进入小程序的客服会话界面: <button open-type="contact" >联系我们</ ...
- 微信小程序客服消息使用指南
客服消息使用指南 为丰富小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通. 功能介绍 用户可使用小程序客服消息功能,与小程序的客服人 ...
- 微信小程序客服消息使用
客服消息使用 为丰富小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通. xiaokefu.com.cn 功能介绍 用户可使用小程序客 ...
- 微信小程序---客服消息接口调用,拿来即用
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! 在 ...
- 微信小程序 客服自动回复图片
产品需求是,在客服对话框里,发送特定的文字,回复我们的二维码: 小城程开发完成后,这个自动回复图片的功能就摆在了眼前.刚开始我们想到的是:在线客服功能的设置里设置好自动回复的图片,但是目前设置不支持自 ...
- 微信小程序客服系统
微信公众平台 点击 客服 添加 微信文档-接收消息和事件 在页面中使用 第三方客服系统 芝麻小客服 填写对应的 appid && AppSecret 等信息 微信文档-接收消息和事 ...
- Embed image in a <button> element 微信小程序 客服按钮
html - Embed image in a <button> element - Stack Overflow https://stackoverflow.com/questions/ ...
- 小程序客服下发消息禁止后 session from 还有用吗?
文章概要 1. 小程序下发政策调整分析 2. session from 数据还传到底三方了没? 1. 小程序下发政策调整分析 小程序客服功能下发策略调整 ...
随机推荐
- 一键脚本清理DEBIAN系统无用组件 减少系统资源
虽然如今我们选择服务器资源都比较多,以前我们看到很多128MB内存.甚至32MB内存的建站网站,感觉特别羡慕.其实这些也不是难事,相比之下,DEBIAN系统比CENTOS系统占用资源少,然后我们需要进 ...
- logstash 修改配置不重启的方法
1.修改好yml配置 2.进入logstash 容器内,或服务器上 3.ps -ef | grep logstash 拿到进程号 4.kill -1 <pid> 5.logstash 会重 ...
- vscode+MinGW+cmake设置轻量ide
本地随手写一些题目的时候,发现visual studio非常庞大emmm vscodevscode是一个轻量编辑器 (1)vscode插件与设置自动同步 在两个电脑上,用vscode可以同步插件 ,利 ...
- 项目管理 - PM、 SRS、SOW简介及范例
PM在一个IT项目中的主要管理任务 http://blog.csdn.net/eaglezhang/article/details/1717171 计算机软件需求说明编制指南 http://blog. ...
- numpy.convolve函数用法
函数numpy.convolve(a, v, mode=‘full’),这是numpy函数中的卷积函数库 参数: a:(N,)输入的一维数组 b:(M,)输入的第二个一维数组 mode:{‘full’ ...
- SVG制作可爱小页面
很久都没有在博客园上发表一些自己学的新东西了,只是在有空的时候逛一逛博客园而已,看来我不是一个真正的程序员,哈哈! 但是今天非常想和大家分享一个小东西,那是前两天在一个网页上看到了这个东西 我好奇中间 ...
- Java中如何创建一个新的对象的/Creating Objects/
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't ...
- k8s初始化搭建方法
http://www.cnblogs.com/cocowool/p/kubeadm_install_kubernetes.html https://www.kubernetes.org.cn/doc- ...
- Java项目下的classpath路径包括哪里
https://my.oschina.net/zjllovecode/blog/916927 classpath指的是.classpath下kind="src" 的路径
- selenium批量执行脚本操作
import unittest import os from HTMLTestRunner import HTMLTestRunner # 待执行用例的目录 def allcase(): #引入执行用 ...