//定義兩個成員變量常量 //獲取臨時素材(視頻不能使用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; }