“StringBuffer sb = new StringBuffer()”在Android中获取空值

时间:2013-08-03 13:23:08

标签: java android stringbuffer

我在我的http get请求中使用下面的代码,但是从return返回的是null。我不知道为什么。

  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");

有时日志会被打印出来。事实上,实际上并不是1%。但我不知道为什么会这样。

1 个答案:

答案 0 :(得分:3)

此代码不会产生“null”。必须有更多代码没有显示。

如果这是您拥有的所有代码,我建议您删除StringBuffer并将其替换为

return "";

您更有可能忘记提及一些类似

的代码
Object o = null;

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

编辑:根据您的更新,我不得不假设您正在阅读“null”

这样的行

您不太可能想要丢弃每一行之间的换行符。我建议您添加(“\ n”)或者只记录您获得的所有文本而不考虑新行。

BTW请不要使用StringBuffer作为其替代品StringBuilder已存在近十年。有一种常见的误解,即使用StringBuffer有助于多线程,但更常见的是导致代码不正确,因为在多线程上下文中正确使用StringBuffer非常困难(如果不是不可能)