我正在编写一个下载 youtube 视频的应用程序,但遇到了一个小问题。
您可能知道,youtube 中的每个视频链接都包含指向该视频的直接链接。当页面使用 flash flayer(而不是 html5 左右)时,它存储在 flash 对象中(在它的 flashvar attr 中)。我的应用程序解析该 Flash 对象并从中提取那些直接链接(每个可用视频质量一个链接)。
我通过下载视频的 html 代码(例如http://www.youtube.com/watch?v=VIDEOID)并解析它来获取 flash 对象的 html 代码。
我使用 asynctask 下载 html 代码(非移动版本),这是我的下载代码:
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1)");
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
String html = "";
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
str.append(line);
}
in.close();
html = str.toString();
return html;
现在我遇到了一个小问题:
上面的代码不会下载 whloe html 代码。下载的 html 字符串在中间某处被剪切,我没有得到 flash 对象部分。此功能适用于其他网站!
难道我做错了什么?
谢谢 :)