1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java 微信公众号上传永久素材的方法

Java 微信公众号上传永久素材的方法

时间:2019-12-09 03:32:15

相关推荐

Java 微信公众号上传永久素材的方法

用 Java 实现微信公众号上传永久素材,代码如下:

/*** 上传其他永久素材(图片素材的上限为5000,其他类型为1000)* @param appid* @param secret* @return* @throws Exception*/public JSONObject addMaterialEver(String appid, String secret,File file,String type) throws Exception {try {PrintUtil.println("开始上传"+type+"永久素材---------------------");//开始获取证书String accessToken=new AccessTokenBizImpl().getAccessToken(appid, secret);if(!StringUtil.isEmptyString(accessToken)){PrintUtil.println("accessToken is null");return null;}//上传素材String path="https://api./cgi-bin/material/add_material?access_token="+accessToken+"&type="+type;String result=HttpsUtil.connectHttpsByPost(path, null, file);result=result.replaceAll("[\\\\]", "");PrintUtil.println("result:"+result);JSONObject resultJSON=JSONObject.fromObject(result);if(resultJSON!=null){if(resultJSON.get("media_id")!=null){PrintUtil.println("上传"+type+"永久素材成功");return resultJSON;}else{PrintUtil.println("上传"+type+"永久素材失败");}}return null;} catch (Exception e) {PrintUtil.println("程序异常", e);throw e;}finally{PrintUtil.println("结束上传"+type+"永久素材---------------------");}}/*** 上传图片到微信服务器(本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下)* @param appid* @param secret* @param type* @param file* @return* @throws Exception*/public JSONObject addMaterialEver(String appid, String secret,File file) throws Exception {try {PrintUtil.println("开始上传图文消息内的图片---------------------");//开始获取证书String accessToken=new AccessTokenBizImpl().getAccessToken(appid, secret);if(!StringUtil.isEmptyString(accessToken)){PrintUtil.println("accessToken is null");return null;}//上传图片素材String path="https://api./cgi-bin/media/uploadimg?access_token="+accessToken;String result=HttpsUtil.connectHttpsByPost(path, null, file);result=result.replaceAll("[\\\\]", "");PrintUtil.println("result:"+result);JSONObject resultJSON=JSONObject.fromObject(result);if(resultJSON!=null){if(resultJSON.get("url")!=null){PrintUtil.println("上传图文消息内的图片成功");return resultJSON;}else{PrintUtil.println("上传图文消息内的图片失败");}}return null;} catch (Exception e) {PrintUtil.println("程序异常", e);throw e;}finally{PrintUtil.println("结束上传图文消息内的图片---------------------");}}

具体的HTTPS请求:

String result =null;con.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false); // post方式不能使用缓存// 设置请求头信息con.setRequestProperty("Connection", "Keep-Alive");con.setRequestProperty("Charset", "UTF-8");// 设置边界String BOUNDARY = "----------" + System.currentTimeMillis();con.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\";filelength=\""+file.length()+"\";filename=\""+ file.getName() + "\"\r\n");sb.append("Content-Type:application/octet-stream\r\n\r\n");byte[] head = sb.toString().getBytes("utf-8");// 获得输出流OutputStream out = new DataOutputStream(con.getOutputStream());// 输出表头out.write(head);// 文件正文部分// 把文件已流文件的方式 推入到url中DataInputStream in = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}in.close();// 结尾部分byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线out.write(foot);out.flush();out.close();StringBuffer buffer = new StringBuffer();BufferedReader reader = null;try {// 定义BufferedReader输入流来读取URL的响应reader = new BufferedReader(new InputStreamReader(con.getInputStream()));String line = null;while ((line = reader.readLine()) != null) {buffer.append(line);}if (result == null) {result = buffer.toString();}} catch (IOException e) {System.out.println("发送POST请求出现异常!" + e);e.printStackTrace();throw new IOException("数据读取异常");} finally {if (reader != null) {reader.close();}}return result;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。