如何在Android应用程序中解码URL

可能重复:
如何在Java中进行URL解码?

我试图编写一个Android应用程序,它应该检索一个总是URLEncoded的CDN URL的内容。 为了举例,我使用的是一个YouTubeurl,因为它们的格式是一样的。

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()方法。 总之,这是行不通的

请帮助我这一点。

Solutions Collecting From Web of "如何在Android应用程序中解码URL"