Как декодировать URL-адрес в приложении Android?

Я пытаюсь написать приложение для 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(). короче не работает

Пожалуйста, помогите мне в этом.


person Rebecca    schedule 23.01.2012    source источник
comment
Версия URLDecoder для Android.   -  person Marvin Pinto    schedule 23.01.2012


Ответы (2)


Строка, которая у вас есть, закодирована в URL.

String afterDecode = URLDecoder.decode(stingvalue, "UTF-8");
person Kushan    schedule 23.01.2012
comment
Uri.decode(String) (android.net.Uri) - person hmac; 07.11.2019
comment
@hmac, ваш ответ больше связан с Android и должен быть правильным. Спасибо - person amira; 19.04.2020

с помощью URLDecoder

person Aravind Yarram    schedule 23.01.2012