微信上传素材

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.tianci.camus.weiXin.WeiXinMedia;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;


import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.*;


public class WxMediaUtil {

    /**
     * 上传媒体文件
     * @param accessToken 接口访问凭证
     * @param type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)
     * @param mediaFileUrl 媒体文件的url
     * 上传的媒体文件限制
     * 图片(image):1MB,支持JPG格式
     * 语音(voice):2MB,播放长度不超过60s,支持AMR格式
     * 视频(video):10MB,支持MP4格式
     * 普通文件(file):10MB
     * */
    public WeiXinMedia getUploadMedia(String accessToken, String type, String mediaFileUrl) throws IOException {
        WeiXinMedia weiXinMedia = null;
        String uploadMediaUrl = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
        uploadMediaUrl = uploadMediaUrl.replace("ACCESS_TOKEN", accessToken).replace("TYPE", type);

        CloseableHttpClient httpclient = null;
        httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(uploadMediaUrl);
        FileBody bin = new FileBody(new File(mediaFileUrl));
        MultipartEntity mpEntity = new MultipartEntity(); // 文件传输
        mpEntity.addPart("media", bin);
        httpPost.setEntity(mpEntity);
        CloseableHttpResponse response = null;
        try {
            response = httpclient.execute(httpPost);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == HttpStatus.SC_OK) {
                HttpEntity entity = response.getEntity();
                String jsonString = EntityUtils.toString(entity);
                JSONObject json = JSON.parseObject(jsonString);
                System.out.println("上传图文素材返回值"+jsonString);
                weiXinMedia = new WeiXinMedia();
                weiXinMedia.setType(json.getString("type"));
                // type等于 缩略图(thumb) 时的返回结果和其它类型不一样
                if ("thumb".equals(type))
                    weiXinMedia.setMediaId(json.getString("thumb_media_id"));
                else
                    weiXinMedia.setMediaId(json.getString("media_id"));
                weiXinMedia.setCreatedAt(Integer.valueOf(json.getString("created_at")));
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(response != null){
                response.close();
            }
            if(httpclient!= null){
                httpclient.close();
            }
        }
        return weiXinMedia;
    }


    public static void main(String[] args){
       
        String appId = "。。。。";
        String secret = "。。。。";
        WeixinApi weixinApi = new WeixinApi(appId,secret);
        try {
            WxMediaUtil weiXinMediaId =  new WxMediaUtil();
            WeiXinMedia weiXinMedia = weiXinMediaId.getUploadMedia(weixinApi.getAccessToken(), "thumb", "D:\\bb.png");
                    
            System.out.println(weiXinMedia.getMediaId());
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("出错了!!!!");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u010591939/article/details/47084555