getJsonStringFromURL()返回一个空字符串

问题描述:

我想从URL的JSON字符串,当我使用这行代码,我的方法返回一个空字符串值:getJsonStringFromURL()返回一个空字符串

String jsonStr = getJsonStringFromURL(url); 

这里是方法我使用的是:

public static String getJsonStringFromURL(String url) { 
    InputStream is = null; 
    String result = ""; 
    JSONObject jsonObject = null; 

    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(url); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } 
    catch (Exception e) { 
     return null; 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
    } 
    catch(Exception e) { 
     return null; 
    } 
    return result; 
} 

我必须用在当我复制并粘贴网址到浏览器中它并返回并显示一个JSON字符串的URL变量。任何建议或帮助将不胜感激。

+0

你可以给你的网址,你会得到异常,返回null。调试应用程序。在你尝试的操作系统版本上。 – 2013-03-27 16:10:58

+1

由于异常,代码可能会返回'null'。您至少需要**记录捕获的异常。 – 2013-03-27 16:11:18

+0

您的JSON字符串是否使用类似JSONlint进行验证?否则它可能是无效的JSON字符串。 http://jsonlint.com/ – JakeCataford 2013-03-27 16:13:51

事情是当您关闭BufferReader时,将结果赋值给结果。这就是为什么你得到空值。

而不是分配result = sb.toString(); BufferReader之外的分配关闭它之前。

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    result = sb.toString(); 
    System.out.println(result);// It will print you the value 
    is.close(); 

希望它有帮助。