我在我的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%。但我不知道为什么会这样。
答案 0 :(得分:3)
此代码不会产生“null”。必须有更多代码没有显示。
如果这是您拥有的所有代码,我建议您删除StringBuffer并将其替换为
return "";
您更有可能忘记提及一些类似
的代码Object o = null;
sb.append(o); // appears as "null"
编辑:根据您的更新,我不得不假设您正在阅读“null”
这样的行您不太可能想要丢弃每一行之间的换行符。我建议您添加(“\ n”)或者只记录您获得的所有文本而不考虑新行。
BTW请不要使用StringBuffer作为其替代品StringBuilder已存在近十年。有一种常见的误解,即使用StringBuffer有助于多线程,但更常见的是导致代码不正确,因为在多线程上下文中正确使用StringBuffer非常困难(如果不是不可能)