java版本,企业微信上传临时素材,解决44001错误
经测试下面代码正常运行(代码是东拼西凑出来的)。body部分可以参考使用;另外一定要注意,本人亲测,上传文件大小是0的文件也会出现44001错误,不要出现44001错误就只从代码上找问题。
public static String uploadTemporaryMedia(String accessToken, String type, File file){StringBuilder buffer = new StringBuilder();try{URL url = new URL("https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token="+ accessToken +"&type=" + type);HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); //打开链接httpUrlConn.setDoInput(true);httpUrlConn.setDoOutput(true);httpUrlConn.setUseCaches(false);httpUrlConn.setRequestProperty("Connection", "Keep-Alive");httpUrlConn.setRequestProperty("Charset", "UTF-8");String BOUNDARY = "----------" + System.currentTimeMillis();httpUrlConn.setRequestProperty("Content-Type","multipart/form-data; boundary="+ BOUNDARY);OutputStream outputStream = new DataOutputStream(httpUrlConn.getOutputStream());outputStream.write(("--" + BOUNDARY + "\r\n").getBytes(StandardCharsets.UTF_8));outputStream.write(("Content-Disposition: form-data; name=\"media\";filelength=\""+ file.length() +"\";filename=\"" + file.getName() + "\"\r\n").getBytes(StandardCharsets.UTF_8));outputStream.write("Content-Type: application/octet-stream\r\n\r\n".getBytes(StandardCharsets.UTF_8));DataInputStream in = new DataInputStream(Files.newInputStream(file.toPath()));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {outputStream.write(bufferOut, 0, bytes);}in.close();outputStream.write(("\r\n--" + BOUNDARY + "--\r\n").getBytes (StandardCharsets.UTF_8));outputStream.flush();outputStream.close();InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str;while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}bufferedReader.close();inputStreamReader.close();inputStream.close();httpUrlConn.disconnect();} catch (Exception e) {System.out.println("发送POST请求出现异常!" + e);e.printStackTrace();}return buffer.toString();}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
