0

我在我的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%。但我不知道为什么会导致。

4

1 回答 1

3

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

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

return "";

您更有可能忘记提及一些正在执行类似操作的代码

Object o = null;

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

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

您不太可能希望丢弃每行之间的换行符。我建议您也附加(“\n”),或者只记录您获得的所有文本而不考虑换行。

顺便说一句,请不要使用 StringBuffer,因为它的替代品 StringBuilder 已经存在了将近十年。有一个常见的误解,认为使用 StringBuffer 有助于多线程,但更常见的是它会导致错误的代码,因为在多线程上下文中正确使用 StringBuffer 是非常困难的,如果不是不可能的话

于 2013-08-03T13:24:20.020 回答