getJsonStringFromURL()返回一个空字符串
问题描述:
我想从URL的JSON字符串,当我使用这行代码,我的方法返回一个空字符串值: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;
}
我必须用在当我复制并粘贴网址到浏览器中它并返回并显示一个JSON字符串的URL变量。任何建议或帮助将不胜感激。
答
事情是当您关闭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();
希望它有帮助。
你可以给你的网址,你会得到异常,返回null。调试应用程序。在你尝试的操作系统版本上。 – 2013-03-27 16:10:58
由于异常,代码可能会返回'null'。您至少需要**记录捕获的异常。 – 2013-03-27 16:11:18
您的JSON字符串是否使用类似JSONlint进行验证?否则它可能是无效的JSON字符串。 http://jsonlint.com/ – JakeCataford 2013-03-27 16:13:51