Возможный дубликат:
Как выполнить декодирование URL в Java?
Я пытаюсь написать приложение для Android, и он должен получить содержимое URL-адреса CDN, которые всегда имеют URLEncoded. Для примера, я использую URL-адрес youtube, потому что они отформатированы одинаково.
public static String getText(String url) throws Exception {
URL website = new URL(url);
URLConnection connection = website.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null)
response.append(inputLine);
in.close();
return response.toString();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
String page = getText("http://www.youtube.com/watch?v=QH2-TGUlwu4");
String[] temper = page.split("flashvars=\"");
page = temper[1];
temper = page.split("\" allowscriptaccess=\"always\"");
page = temper[0];
temper = page.split("url_encoded_fmt_stream_map=");
page = temper[1];
temper = page.split("fallback_host");
page = temper[0];
page = page.replaceAll("url%3D", ""); **
page = URLDecoder.decode(page, "UTF-8"); **
page = page.replaceAll("hd720&", "hd720"); **
System.out.println(page);
// TODO code application logic here
} catch (Exception ex) {
Logger.getLogger(app.class.getName()).log(Level.SEVERE, null, ex);
}
}
Код, который отмечен (вероятно), где он вызывает у меня проблемы. Вывод system.out.println
http%3A%2F%2Fo-o.preferred.ord08s01.v3.lscache1.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Csource%252Cratebypass%252Ccp%26fexp%3D909708%252C907322%252C908613%26itag%3D44%26ip%3D99.0.0.0%26signature%3D2889261E861AF0E724519652960C1BF31DA5BABD.A621580215B6416151470893E2D07BDE7AFF081E%26sver%3D3%26ratebypass%3Dyes%26source%3Dyoutube%26expire%3D1327316557%26key%3Dyt1%26ipbits%3D8%26cp%3DU0hRTFNMVF9KUUNOMV9LRlhGOlNaUzBvTG1tdEp2%26id%3D407dbe4c6525c2ee&quality=large&
Я хочу, чтобы этот URL был декодирован таким образом, что я могу обернуть его в метод для его загрузки.
Я уже пробовал метод string.replaceAll(). Короче говоря, это не работает.
Пожалуйста, помогите мне в этом.