微信公众号获取永久素材

时间:2024-03-15 09:52:15

这里不会介绍如何获取token,在开发中发现很多坑,试过很多中方法,下面介绍了一种比较简单的获取永久素材的方式,不需要大量的代码,方便开发。

业务流程:
微信公众号获取永久素材
获取微信公众号永久素材分为两种情况:

  1. 文件类型为:video、图文素材
    获取此类素材时,微信将返回一段json。
  2. 文件类型为:image、voice、thumb
    获取此类素材时,微信直接响应素材内容,也就是直接返回文件。(下面将通过流的方式进行获取文件)

微信官方接口地址:点击进入微信官方获取永久素材文档
第一种:获取video等类型的素材
此类比较简单,利用HttpUtil直接发送POST请求,将参数以json格式传递。
获取token的方式这里不进行记录,代码如下:微信公众号获取永久素材
返回的数据类型如官方文档。

第二种:获取image等类型的素材
这里开发的问题比较多,下面介绍的是获取文件流的方式。
代码如下:

		import com.alibaba.fastjson.JSONObject;
		import org.apache.http.client.methods.CloseableHttpResponse;
		import org.apache.http.client.methods.HttpPost;
		import org.apache.http.entity.StringEntity;
		import org.apache.http.impl.client.CloseableHttpClient;
		import org.apache.http.impl.client.HttpClients;
		import java.io.InputStream;

    public static void main(String[] args) throws Exception {
        // 封装请求参数
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("media_id","");
        // 获取到http连接对象
        HttpPost httpPost = new HttpPost("httpUrl");
        StringEntity stringEntity = new StringEntity(jsonObject.toString());
        httpPost.setEntity(stringEntity);
        // 打开链接发送请求 获取到返回的流
        CloseableHttpClient build = HttpClients.custom().build();
        CloseableHttpResponse execute = build.execute(httpPost);
        InputStream inputStream = execute.getEntity().getContent();
    }

获取到流后就可以随意操作了,可以上传到文件服务器,也可以直接输出为文件。
实际的开发代码,亲测可用,欢迎留言。