微信对接平台链接
这个接口的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的问题。