微信对接平台链接
这个接口的media参数有点发懵,用okhttp请求,参数头尝试了几次均失败,记录下成功的java实现
public static String uploadPermanentMaterial(String url, File file) {String result = null;try {URL uploadUrl = new URL(url);HttpURLConnection conn = (HttpURLConnection)uploadUrl.openConnection();conn.setConnectTimeout(5000);conn.setReadTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Connection", "Keep-Alive");conn.setRequestProperty("Cache-Control", "no-cache");String boundary = "-----------------------------" + System.currentTimeMillis();conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);OutputStream output = conn.getOutputStream();output.write(("--" + boundary + "\r\n").getBytes());output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName()).getBytes());output.write("Content-Type: video/mp4 \r\n\r\n".getBytes());byte[] data = new byte[1024];int len;FileInputStream input = new FileInputStream(file);while ((len = input.read(data)) > -1) {output.write(data, 0, len);}output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes());output.flush();output.close();input.close();InputStream resp = conn.getInputStream();StringBuilder sb = new StringBuilder();while ((len = resp.read(data)) > -1) {sb.append(new String(data, 0, len, StandardCharsets.UTF_8));}resp.close();result = sb.toString();} catch (IOException e) {System.out.println("上传封面图异常");}return result;}
另外推荐 wxJava开源项目作为微信对接的方式,最大的好处是对接方便以及解决了refresh token的问题。
