2013-08-03 6 views
0

Я использую код, ниже которого в моем запросе http получить, но то, что я получаю от возврата, является null.I не знаю почему."StringBuffer sb = new StringBuffer()" получить нулевое значение в Android

public static String getResponseFromGetUrl(String url) throws Exception { 

       StringBuffer sb = new StringBuffer(); 


       try { 
        HttpResponse httpResponse = httpclient.execute(httpRequest); 

        String inputLine = ""; 

        if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 

         InputStreamReader is = new InputStreamReader(httpResponse 
           .getEntity().getContent()); 
         BufferedReader in = new BufferedReader(is); 
         while ((inputLine = in.readLine()) != null) { 

          sb.append(inputLine); 
         } 

         in.close(); 

        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
        return "net_error";   
       } finally { 
        httpclient.getConnectionManager().shutdown(); 
       } 

       return sb.toString(); 

    } 

И что я должен использовать функцию является

String json_str = HttpUtils.getResponseFromGetUrl("www.xxx.com/start"); 
    if ((json_str == null)) Log.d("Chen", "lastestTimestap----" + "json_str == null"); 

И иногда Log будет printed.Not всегда, на самом деле, как 1% .Но я не знаю, почему это вызвало.

+0

Можно ли увидеть больше кода? Как вы определяете его значение null? –

+1

Возможно, вы случайно сделали такие вещи, как 'sb.append (" null ");'. – johnchen902

+0

@dystroy Я редактировал код –

ответ

3

Этот код не будет выдавать «нуль». Должен быть больше кода, который вы не показываете.

Если все это код, который вы имеете, я предлагаю вам удалить StringBuffer и заменить его

return ""; 

Скорее вы forgetten упомянуть некоторый код, который делает что-то вроде

Object o = null; 

sb.append(o); // appears as "null" 

EDIT: на основании вашего обновления, я должен был предположить, что вы читаете строку типа «null»

Очень маловероятно, что вы хотите отменить новую строку между каждой линией северо-восток Я предлагаю вам либо добавить («\ n»), либо просто записать весь текст, который вы получите, без учета новых строк.

BTW Пожалуйста, не используйте StringBuffer, поскольку его замена StringBuilder существует уже почти десять лет. Существует распространенное заблуждение, что использование StringBuffer помогает в многопоточности, но чаще это приводит к неправильному коду, потому что это очень сложно, если не невозможно правильно использовать StringBuffer в многопоточном контексте.

+2

Это больше похоже на комментарий, чем на ответ ... –

+1

Он нигде не упоминает NullPointerException. – f1sh

+0

@ f1sh Хорошая точка, хотя это звучит не более вероятно. –