2010-01-19 10 views
8

मैं निम्नलिखित कोड है कि एक यूआरएलएक यूआरएल के एंड्रॉयड पढ़ें सामग्री (सामग्री परिणाम में के बाद लापता)

public static String DownloadText(String url){ 
    StringBuffer result = new StringBuffer(); 
    try{ 
     URL jsonUrl = new URL(url); 

     InputStreamReader isr = new InputStreamReader(jsonUrl.openStream()); 

     BufferedReader in = new BufferedReader(isr); 

     String inputLine; 

     while ((inputLine = in.readLine()) != null){ 
      result.append(inputLine); 
     } 
    }catch(Exception ex){ 
     result = new StringBuffer("TIMEOUT"); 
     Log.e(Util.AppName, ex.toString()); 
    } 
     in.close(); 
     isr.close(); 
    return result.toString(); 
} 

समस्या की सामग्री को पढ़कर है मैं सामग्री याद आ रही है के बाद परिणाम में 4065 वर्ण लौट आए। क्या कोई मुझे इस समस्या को हल करने में मदद कर सकता है।

नोट: यूआरएल जिसे मैं पढ़ने की कोशिश कर रहा हूं, में एक जेसन प्रतिक्रिया है, इसलिए सबकुछ एक पंक्ति में है, मुझे लगता है कि मुझे कुछ सामग्री क्यों गुम है। convertStreamToString है, जबकि

try { 
    feedUrl = new URL(url).openConnection(); 
} catch (MalformedURLException e) { 
    Log.v("ERROR","MALFORMED URL EXCEPTION"); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
try { 
    in = feedUrl.getInputStream(); 
    json = convertStreamToString(in); 
}catch(Exception e){} 

:

+0

हाय मुझे एक ही समस्या है। क्या आप मेरी मदद कर सकते हैं इसे सुधारने के लिए आपने क्या किया है ??? – Praveen

+0

मुझे अभी तक इस समस्या का समाधान मिला है। – Josnidhin

+0

एचटीपी क्लाइंट का उपयोग करने के बारे में कैसे? मेरा मतलब है org.apache.http.client.HttpClient। – skysign

उत्तर

10

इस प्रयास करें

public String getOnline(String urlString) { 
    URLConnection feedUrl; 
    try { 
     feedUrl = new URL(urlString).openConnection(); 
     InputStream is = feedUrl.getInputStream(); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 

     while ((line = reader.readLine()) != null) { 
      sb.append(line + ""); 
     } 
     is.close(); 

     return sb.toString(); 

    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

    return null; 
} 

और याद रखें:

private static String convertStreamToString(InputStream is) throws UnsupportedEncodingException { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    try { 
    while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } finally { 
    try { 
     is.close(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
} 
return sb.toString(); 
} 
3

यहाँ वेब से किसी स्क्रिप्ट का आउटपुट लाने के लिए एक क्लीनर संस्करण है कि आप मुख्य धागे से कुछ भी डाउनलोड नहीं कर सकते हैं। यह एक अलग धागे से होना है। कुछ का उपयोग करें:

new Thread(new Runnable(){ 
      public void run(){ 

       if(!isNetworkAvailable()){ 
        Toast.makeText(getApplicationContext(), getResources().getString(R.string.nointernet), Toast.LENGTH_LONG).show(); 
        return; 
       } 

       String str=getOnline("http://www.example.com/script.php"); 

      } 
     }).start(); 
+0

क्या मुझे पता चलेगा कि यह विधि खाली लाइनों को अनदेखा करती है और दर्ज करती है? – user1788736

संबंधित मुद्दे