//定义两个成员变量常量 //获取临时素材(视频不能使用https协议) public static final String GET_TMP_MATERIAL = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s"; //获取临时素材(视频) public static final String GET_TMP_MATERIAL_VIDEO = "http://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s"; //获取微信服务器中生成的媒体文件 //因为视频使用的是http协议,而图片、语音使用http协议,故此处须要传递media_id和type protected static File fetchTmpFile(String media_id, String type){ try { String token = AccessTokenApi.getAccessToken().getAccessToken(); String url = null; //视频是http协议 if("video".equalsIgnoreCase(type)){ url = String.format(GET_TMP_MATERIAL_VIDEO, token, media_id); }else{ url = String.format(GET_TMP_MATERIAL, token, media_id);; } URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.setRequestMethod("POST"); conn.connect(); BufferedInputStream bis = new BufferedInputStream(conn.getInputStream()); String content_disposition = conn.getHeaderField("content-disposition"); //微信服务器生成的文件名称 String file_name =""; String[] content_arr = content_disposition.split(";"); if(content_arr.length == 2){ String tmp = content_arr[1]; int index = tmp.indexOf("\""); file_name =tmp.substring(index+1, tmp.length()-1); } //生成不一样文件名称 File file = new File(file_name); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); byte[] buf = new byte[2048]; int length = bis.read(buf); while(length != -1){ bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); return file; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }