微信对接平台链接
    image.png
    这个接口的media参数有点发懵,用okhttp请求,参数头尝试了几次均失败,记录下成功的java实现

    1. public static String uploadPermanentMaterial(String url, File file) {
    2. String result = null;
    3. try {
    4. URL uploadUrl = new URL(url);
    5. HttpURLConnection conn = (HttpURLConnection)uploadUrl.openConnection();
    6. conn.setConnectTimeout(5000);
    7. conn.setReadTimeout(30000);
    8. conn.setDoOutput(true);
    9. conn.setDoInput(true);
    10. conn.setUseCaches(false);
    11. conn.setRequestMethod("POST");
    12. conn.setRequestProperty("Connection", "Keep-Alive");
    13. conn.setRequestProperty("Cache-Control", "no-cache");
    14. String boundary = "-----------------------------" + System.currentTimeMillis();
    15. conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
    16. OutputStream output = conn.getOutputStream();
    17. output.write(("--" + boundary + "\r\n").getBytes());
    18. output.write(
    19. String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName())
    20. .getBytes());
    21. output.write("Content-Type: video/mp4 \r\n\r\n".getBytes());
    22. byte[] data = new byte[1024];
    23. int len;
    24. FileInputStream input = new FileInputStream(file);
    25. while ((len = input.read(data)) > -1) {
    26. output.write(data, 0, len);
    27. }
    28. output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes());
    29. output.flush();
    30. output.close();
    31. input.close();
    32. InputStream resp = conn.getInputStream();
    33. StringBuilder sb = new StringBuilder();
    34. while ((len = resp.read(data)) > -1) {
    35. sb.append(new String(data, 0, len, StandardCharsets.UTF_8));
    36. }
    37. resp.close();
    38. result = sb.toString();
    39. } catch (IOException e) {
    40. System.out.println("上传封面图异常");
    41. }
    42. return result;
    43. }

    另外推荐 wxJava开源项目作为微信对接的方式,最大的好处是对接方便以及解决了refresh token的问题。