1.上传素材拼接的URL,包含token以及类型 String url = String.format("%s%s?%s=%s&%s=%s", sdkApiContext.getDomain(), WeChatApiUrlDef.UPLOAD_MEDIA, WeChatApiAuthDef.ACCESS_TOKEN, sdkApiContext.getAccessToken().getToken(), WeChatApiAuthDef.TYPE, request.getType());
2.上传得到mediaID,通过jsonObject赋值给相应的对象字段值
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", request.getMedia().getName()).getBytes());
output.write("Content-Type: video/mp4 \r\n\r\n".getBytes());
byte[] data = new byte[1024];
int len = 0;
FileInputStream input = new FileInputStream(request.getMedia());
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, "utf-8"));
resp.close();
result = sb.toString();
} catch (
IOException e) {
logger.warn("上传失败");
}
JSONObject jsonpObject = JSONObject.fromObject(result);
UploadMediaResponse uploadMediaResponse = new UploadMediaResponse();
uploadMediaResponse.setCreatedAt(jsonpObject.getInt("created_at"));
uploadMediaResponse.setMediaId(jsonpObject.getString("media_id"));
uploadMediaResponse.setType(jsonpObject.getString("type"));