专栏简介 | ||
💒个人主页 📰专栏目录 | 📖心灵鸡汤📖 沙漠之所以美丽,是因为在不远处有一片绿洲。 | ✍相关博文✍ 微信API封装 |
文章目录
说明
本文仅供参考,但保证代码有效可用
请优先查阅官网素材管理
1、官网对于素材的说明
2.上传接口的说明
实测
临时素材接口中文件参数名
media可以非固定参数名,改为如
file之类的参数名仍可上传成功
3.access_token
参考: 微信公众号消息推送开发(模板消息):开发实现(二)
代码实现
1.下文演示代码并非接口,可自行修改
2.对voice类型的文件判断时,并没有对时长进行校验,请自行判断
3.以下以图片为演示素材
4使用httpclient模拟请求
引入依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5</version>
</dependency>
1.新增临时素材
https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
1.创建mediaUpload.java
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxxxxx";
public static void main(String[] args) throws Exception{
//本地多媒体文件地址
String file ="D:\\图片.jpeg";
curlFileUpload(file,"image");
}
/**
* @description: 模拟curl上传本地文件
* @author: lvyq
* @date: 2022/7/14 10:05
* @version 1.0
*/
public static void curlFileUpload(String filePath,String type) throws Exception{
String mediaUploadUrl = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
File media = new File(filePath);
mediaUploadUrl =replaceURLByFile(media,type,mediaUploadUrl);
if (mediaUploadUrl!=null){
HttpPost httpPost = new HttpPost(mediaUploadUrl);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
//上传多媒体文件
builder.addBinaryBody("media", media);
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
// 执行提交
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
}else {
logger.error("上传失败");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
logger.info("请求成功:"+result);
}
/**
* @description: 校验文件类型
* @author: lvyq
* @date: 2022/7/14 10:29
* @version 1.0
*/
private static String replaceURLByFile(File media,String type,String mediaUploadUrl) {
if (media.isFile()){
//image 校验
if (type.equals("image")){
if (!checkFileType(type,getFileSuffix(media))|| getFileSize(media)>10*1024*1024){
logger.error("文件类型不支持,或文件大于10M");
return null;
}
}else if (type.equals("voice")){
if (!checkFileType(type,getFileSuffix(media)) || getFileSize(media)>2*1024*1024){
logger.error("文件类型不支持,或文件大于2M");
return null;
}
}else if (type.equals("video")){
if (!"MP4".equalsIgnoreCase(getFileSuffix(media)) || getFileSize(media)>2*1024*1024){
logger.error("文件类型不支持,或文件大于2M");
return null;
}
}else if (type.equals("thumb")){
if (!"JPG".equalsIgnoreCase(getFileSuffix(media)) || getFileSize(media)>64*1024){
logger.error("文件类型不支持,或文件大于64KB");
return null;
}
}else {
logger.error("文件不支持");
return null;
}
}else {
logger.error("文件不存在");
return null;
}
mediaUploadUrl=mediaUploadUrl.replace("ACCESS_TOKEN",ACCESS_TOKEN).replace("TYPE",type);
return mediaUploadUrl;
}
/**
* 获取文件后缀名
*
* @param file
* @return
*/
public static String getFileSuffix(File file) {
String suffix="";
String fileName = file.getName();
if (fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) {
suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
}
return suffix;
}
/**
* @description: 判断文件类型
* @author: lvyq
* @date: 2022/7/15 17:22
* @version 1.0
*/
public static boolean checkFileType(String type,String mediaType){
boolean ble = false;
if (type.equals("image")){
if (mediaType.equalsIgnoreCase("PNG") || mediaType.equalsIgnoreCase("JPEG") || mediaType.equalsIgnoreCase("JPG") || mediaType.equalsIgnoreCase("GIF")){
ble=true;
}
}else if(mediaType.equalsIgnoreCase("AMR") || mediaType.equalsIgnoreCase("MP3") ){
ble=true;
}
return ble;
}
/**
* @description: 获取文件大小
* @author: lvyq
* @date: 2022/7/15 16:09
* @version 1.0
*/
public static long getFileSize(File file) {
if (!file.exists() || !file.isFile()) {
logger.error("文件不存在");
return -1;
}
logger.info("length:{}",file.length());
return file.length();
}
}
执行结果:
13:09:59.100 [main] INFO mediaUpload - 请求成功:{“type”:“image”,“media_id”:“Dw0HCQJSkt02hWlEY-NC5DRN-kSbmqOVU5ZnjpwEFlmY2jbx9uB4oxATZCdxjwk3”,“created_at”:1657948199,“item”:[]}
临时文件上传成功并返回media_id
2.获取临时素材
临时素材获取的下来后是一个文件流,在浏览器直接放完的话将直接下载到本地
https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
拿
新增临时素材示例改改
使用上文的media_id
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxx";
public static void main(String[] args) throws Exception{
httpGet(ACCESS_TOKEN,"Dw0HCQJSkt02hWlEY-NC5DRN-kSbmqOVU5ZnjpwEFlmY2jbx9uB4oxATZCdxjwk3");
}
/**
* @description:获取临时素材
* @author: lvyq
* @date: 2022/7/14 10:05
* @version 1.0
*/
public static void httpGet(String ACCESS_TOKEN,String MEDIA_ID) throws Exception{
String url="https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID";
url=url.replace("ACCESS_TOKEN",ACCESS_TOKEN).replace("MEDIA_ID",MEDIA_ID);
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
HttpGet httpGet = new HttpGet(url);
// 执行提交
HttpResponse response = httpClient.execute(httpGet);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
logger.info("请求成功:"+result);
}
执行后控制台输出
由此可看出输出的是个文件流,如果供前端回显的话,需要转换,如果在浏览器直接访问的话,将直接下载,官网也给出了说明
浏览器访问效果
3.新增永久素材
与临时素材的主要区别:
1.见名知义,不存在过期一说,不会自动删除
2.支持的素材格式也有所不同,详情查看官网文档
上传永久素材的接口有两个,可根据自身需求自行选择,以下根据两个接口简要演示一下
1.上传图文消息内的图片获取URL
使用的好处官方已经给了说明:
人狠话不多
https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
拿
新增临时素材示例改改
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxxx";
public static void main(String[] args) throws Exception{
//本地多媒体文件地址
String file ="D:\\图片.jpeg";
curlFileUpload(file);
}
/**
* @description: 模拟curl上传本地文件
* @author: lvyq
* @date: 2022/7/14 10:05
* @version 1.0
*/
public static void curlFileUpload(String filePath) throws Exception{
//上传图文消息内的图片获取URL
String mediaUploadUrl = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN";
mediaUploadUrl=mediaUploadUrl.replace("ACCESS_TOKEN",ACCESS_TOKEN);
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
File media = new File(filePath);
if (mediaUploadUrl!=null){
HttpPost httpPost = new HttpPost(mediaUploadUrl);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
//上传多媒体文件
builder.addBinaryBody("media", media);
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
// 执行提交
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
}else {
logger.error("上传失败");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
logger.info("请求成功:"+result);
}
}
执行后查看控制台
返回了一个url查看素材库,并未发现上传为文件在素材库中
2.新增其他类型永久素材
1.与新增临时素材上传的流程一样,实现上与临时素材的素材格式稍有不同
2.本示例上传视频素材时,请按官方要求修改,传相应参数即可
不多哔哔
https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
拿
新增临时素材示例改改
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxxxxx";
public static void main(String[] args) throws Exception{
//本地多媒体文件地址
String file ="D:\\图片.jpeg";
curlFileUpload(file,"image");
}
/**
* @description: 模拟curl上传本地文件
* @author: lvyq
* @date: 2022/7/14 10:05
* @version 1.0
*/
public static void curlFileUpload(String filePath,String type) throws Exception{
String mediaUploadUrl="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE";
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
try {
File media = new File(filePath);
mediaUploadUrl =replaceURLByFile(media,type,mediaUploadUrl);
if (mediaUploadUrl!=null){
HttpPost httpPost = new HttpPost(mediaUploadUrl);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
//中文上传乱码
//builder.setMode(HttpMultipartMode.RFC6532);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
//上传多媒体文件
builder.addBinaryBody("media", media);
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
// 执行提交
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
}else {
logger.error("上传失败");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
logger.info("请求成功:"+result);
}
//其它方法省略了,传参考新增临时素材
}
执行
15:04:55.028 [main] INFO mediaUpload - 请求成功:{“media_id”:“oGIlgGzH9Nn056liMjQKx4DVWQcNRDuJrHU4rrxqED0X7OjOdgRzty7LvgzHvaHb”,“url”:“http://mmbiz.qpic.cn/mmbiz_jpg/VaIMNgZtU3TG3icibjYYuHc0hErPSp9yukmODO2mNMFsGSfwWMJib99tXmy3aD4tcfIOuTCCTiaMiciaCaPicDw99n8Gw/0?wx_fmt=jpeg”,“item”:[]}
返回media_id和url,查看素材库
发现上传的文件名乱码了,不要慌
使用builder.setMode(HttpMultipartMode.RFC6532)
再次上传并查看
请自行验证!!!
4.获取永久素材
看官网
获取素材类型不同,返回的内容也不同,请自行查看官网
https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN
拿
新增临时素材示例改改
package com.lvyq.utils.me;
import com.alibaba.fastjson.JSONObject;
import com.tencentcloudapi.mna.v20210119.models.SrcAddressInfo;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.*;
import java.io.*;
import java.net.ConnectException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxx";
public static void main(String[] args) throws Exception{
String MEDIA_ID="oGIlgGzH9Nn056liMjQKx4DVWQcNRDuJrHU4rrxqED0X7OjOdgRzty7LvgzHvaHb";
String mediaUploadUrl="https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN";
mediaUploadUrl= mediaUploadUrl.replace("ACCESS_TOKEN",ACCESS_TOKEN);
JSONObject mav = new JSONObject();
mav.put("media_id",MEDIA_ID);
sendPost(mediaUploadUrl,mav.toJSONString());
}
public static void sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
out.print(param);
out.flush();
String line;
for(in = new BufferedReader(new InputStreamReader(conn.getInputStream())); (line = in.readLine()) != null; result = result + line) {
}
} catch (Exception var16) {
System.out.println("发送 POST 请求出现异常!" + var16);
var16.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException var15) {
var15.printStackTrace();
}
}
logger.info("result:{}"+result);
}
}
查看返回的是一个流
重申!!!此文以图片为例演示,素材不同,返回的数据也不同
5.删除永久素材
https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=ACCESS_TOKEN
拿
获取永久素材改改就行,就不贴代码了,换下url就行
运行结果
查看素材库
成功删除!!!
6.获取素材总数
官网说明
GET https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN
拿
获取临时素材示例改改
package com.lvyq.utils.me;
import com.alibaba.fastjson.JSONObject;
import com.tencentcloudapi.mna.v20210119.models.SrcAddressInfo;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.*;
import java.io.*;
import java.net.ConnectException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxx";
public static void main(String[] args) throws Exception{
httpGet();
}
public static void httpGet() throws Exception{
String url="https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN";
url=url.replace("ACCESS_TOKEN",ACCESS_TOKEN);
CloseableHttpClient httpClient = HttpClients.createDefault();
String result = "";
HttpGet httpGet = new HttpGet(url);
// 执行提交
HttpResponse response = httpClient.execute(httpGet);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
}
logger.info("请求成功:"+result);
}
执行结果
16:27:12.020 [main] INFO com.lvyq.utils.me.mediaUpload - 请求成功:{“voice_count”:0,“video_count”:0,“image_count”:2,“news_count”:0}
7.获取素材列表
官网说明
POST https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
拿
获取永久素材示例改改
package com.lvyq.utils.me;
import com.alibaba.fastjson.JSONObject;
import com.tencentcloudapi.mna.v20210119.models.SrcAddressInfo;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.*;
import java.io.*;
import java.net.ConnectException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
/**
* @author lvyq
* @version 1.0
* @description: 文件上传
* @date 2022/7/14 10:04
*/
public class mediaUpload {
private static Logger logger = LoggerFactory.getLogger(mediaUpload.class);
public static final String ACCESS_TOKEN="xxxxxx";
public static void main(String[] args) throws Exception{
String mediaUploadUrl="https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN";
mediaUploadUrl= mediaUploadUrl.replace("ACCESS_TOKEN",ACCESS_TOKEN);
JSONObject mav = new JSONObject();
mav.put("type","image");
mav.put("offset",0);
mav.put("count",20);
sendPost(mediaUploadUrl,mav.toJSONString());
}
public static void sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
out.print(param);
out.flush();
String line;
for(in = new BufferedReader(new InputStreamReader(conn.getInputStream())); (line = in.readLine()) != null; result = result + line) {
}
} catch (Exception var16) {
System.out.println("发送 POST 请求出现异常!" + var16);
var16.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException var15) {
var15.printStackTrace();
}
}
logger.info("result:{}"+result);
}
}
执行结果
16:35:22.614 [main] INFO com.lvyq.utils.me.mediaUpload - result:{}{“item”:[{“media_id”:“oGIlgGzH9Nn056liMjQKx9MKdOreL8nSh9Ye-8n2qfy5z6qfsHYZHCnsFhJcE8VV”,“name”:“图片.jpeg”,“update_time”:1657955287,“url”:“https://mmbiz.qpic.cn/mmbiz_jpg/VaIMNgZtU3TG3icibjYYuHc0hErPSp9yukmODO2mNMFsGSfwWMJib99tXmy3aD4tcfIOuTCCTiaMiciaCaPicDw99n8Gw/0?wx_fmt=jpeg”,“tags”:[]},{“media_id”:“oGIlgGzH9Nn056liMjQKx0d_JL18mla2TPK_W8J15ThlUzGdFqEEql-Xc_ZEWNSV”,“name”:“微信截图_20220528144310.png”,“update_time”:1653720213,“url”:“https://mmbiz.qpic.cn/mmbiz_png/VaIMNgZtU3SsC1oQmm0M21oLia8C8LXZEP5Ggg5kekgErkAy6knR9h7Kou9aM8ATTt88ibjw5dtQY5ev9oiaibRf2w/0?wx_fmt=png”,“tags”:[]}],“total_count”:2,“item_count”:2}
其它:
1.本文以本地文件为例演示,实际开发中需要改为接口供前端使用
2.在实际开发中,一般接收
MultipartFile文件类型,使用时将MultipartFile转为File即可