2013-03-27 2 views
0

Я пытаюсь получить JSON строку из URL и мой метод возвращает нулевое значение строки, когда я использую эту строку кода: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; 
} 

у меня есть переменная используется URL-адрес, где, когда я скопировать и вставить URL в браузер он вернется и отображения строки JSON. Любые предложения или помощь будут очень признательны.

+0

Можете ли вы указать URL-адрес, и вы получаете исключение, которое возвращает null. Отладка вашего приложения. В какой версии вы пытаетесь. –

+1

Код, вероятно, возвращает «null» из-за исключения. Вам необходимо ** не менее ** зарегистрировать обнаруженные исключения. –

+0

Выполняет ли ваша строка JSON, используя что-то вроде JSONlint? это может быть неправильная строка JSON, если в противном случае. http://jsonlint.com/ – JakeCataford

ответ

0

Дело в том, что вы назначаете значение для результата, когда 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(); 

Надеюсь, это поможет.

Смежные вопросы