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("出错了!!!!"); } } }
微信上传素材
最新推荐文章于 2020-12-22 01:20:08 发布