2012-01-23 11 views
10

संभव डुप्लिकेट:
How to do URL decoding in Java?कैसे मैं Android आवेदन में यूआरएल को डिकोड करते

मैं एक Android ऐप्लिकेशन लिखने के लिए कोशिश कर रहा हूँ, और यह एक CDN URL की सामग्री पुनर्प्राप्त चाहिए था, जो हमेशा URLEncoded हैं। उदाहरण के लिए, मैं यूट्यूब यूआरएल का उपयोग कर रहा हूं, क्योंकि वे उसी तरह स्वरूपित हैं।

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& 

मुझे लगता है कि यूआरएल के लिए एक रास्ता है कि मैं एक विधि में लपेट इसे डाउनलोड कर सकते हैं में डीकोड चाहते हैं।

मैंने पहले ही string.replaceAll() विधि को आजमाया है। संक्षेप में, यह

काम नहीं करता है कृपया इस बारे में मेरी सहायता करें।

+0

[URLDecoder] का एंड्रॉइड संस्करण (http://developer.android.com/reference/java/net/URLDecoder.html)। –

उत्तर

50

स्ट्रिंग आप इनकोडिंग URL नहीं होता है का उपयोग करते हुए।

String afterDecode = URLDecoder.decode(stingvalue, "UTF-8"); 
संबंधित मुद्दे