2012-01-23 6 views
10

Powiel możliwe:
How to do URL decoding in Java?Jak zdekodować URL w aplikacji Android

Próbuję napisać aplikację na Androida, a to ma odzyskać zawartość CDN URL które są zawsze URnode. Dla przykładu używam adresu URL youtube, ponieważ są one sformatowane w ten sam sposób.

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); 
    } 
} 

Kod, który jest oznaczony gwiazdką, jest (prawdopodobnie) tam, gdzie sprawia mi problemy. Wyjścia 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& 

chcę tego adresu URL dekodowany w taki sposób, że mogę zawinąć go w sposób, aby go pobrać.

Próbowałem już metody string.replaceAll(). Krótko mówiąc, to nie działa

Proszę mi pomóc w tej sprawie.

+0

Wersja Androida [URLDecoder] (http://developer.android.com/reference/java/net/URLDecoder.html). –

Odpowiedz

50

ciąg masz jest zakodowany w adresie URL.

String afterDecode = URLDecoder.decode(stingvalue, "UTF-8"); 
Powiązane problemy