我刚开始学习android应用程序开发。而且,现在我正在创建一个可以从youtube下载视频的下载管理器。我想知道如何解码地址栏上显示的youtube链接的网址,并将其转换为可下载的链接。例如:我尝试粘贴来自youtube视频的网址
假设网址如下:https://www.youtube.com/watch?v=ziJrvjjfqSU 我无法下载视频。 然后,我尝试使用视频的嵌入式URL链接。
说出网址:http://youtu.be/ziJrvjjfqSU 无法下载视频。
但这次我使用了在线解码器并解码了同一视频的网址。
HTTPS%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DziJrvjjfqSU
这一次,它有效。那么任何人都可以告诉我如何解码youtube中的任何视频URL下载它们?我非常感谢本论坛的所有开发人员对我发布的所有早期问题进行排序。现在我希望有人能够解决我的问题。感谢所有这些天才。
P.S:我在我的代码中使用下载管理器来下载视频并解析程序本身中的相应URL。一旦这对任何URL都有效,那么我计划有一个编辑文本,通过该文本可以粘贴URL并下载视频。
答案 0 :(得分:0)
这是对URL进行编码的问题。发生转换,例如:
已转换为%3A
,/
为%2F
您的代码正在使用后面的值。
从您可以使用的Android Developers URL Encoder:
该功能声明为:
除字母以外的所有字符(' a' ...''' A' ...' Z')和数字(& #39; 0' ..' 9')和字符'。',' - ',' *', ' _'转换为'%'前面的十六进制值。例如:'#' - > %23。此外,空格由' +'。
代替
public static String encode (String s, String charsetName)
OR
public static String encode (String s)
后者相当于encode(s, "UTF-8")
使用charsetName命名的Charset进行编码。
This Stack Overflow Question也有很多有用的细节。
示例代码:
try {
// Your URL:
String url = "http://www.stackoverflow.com/posts/25483244";
// Call encode (to UTF-8 for this example)
String encodedURL = URLEncoder.encode(url,"UTF-8");
Log.d("TEST", encodedURL);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
请记住,它是" encodedURL"要用于下载的字符串,而不是原始的" url"一。 (显然,上面的示例代码中的名称)