I am trying to write an Android app, and it's supposed to retrieve the content of a CDN URL, which are always URLEncoded. For the sake of example, I am using a youtube URL, because they are formatted the same way.
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); } }
The code that is starred is (probably) where it is giving me trouble. The system.out.println outputs
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&
I want that URL decoded in a way that I can wrap it in a method to download it.
I have already tried the string.replaceAll() method. In short, It doesn't work
Please help me regarding this.
public class URLDecoder extends Object. Utility class for HTML form decoding. This class contains static methods for decoding a String from the application/x-www-form-urlencoded MIME format. The conversion process is the reverse of that used by the URLEncoder class.
Encode the URLprivate String encodeValue(String value) { return URLEncoder. encode(value, StandardCharsets. UTF_8. toString()); } @Test public void givenRequestParam_whenUTF8Scheme_thenEncode() throws Exception { Map<String, String> requestParams = new HashMap<>(); requestParams.
The string you have there is URL encoded.
String afterDecode = URLDecoder.decode(stingvalue, "UTF-8");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With