我正在努力检查/验证http post操作的结果。我正在检查数据库中的某些条目,然后将结果转换为JSONArray。但是,如果结果为null,我不想尝试转换。我正在捕获异常,因此如果结果为零,程序不会崩溃,但我想避免尝试一起转换空结果。
我正在连接数据库(通过php脚本),如下所示:
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
StringBuilder authentication = new
StringBuilder().append("user").append(":").append("pass");
result = Base64.encodeBytes(authentication.toString().getBytes());
httppost.setHeader("Authorization", "Basic " + result);
nameValuePairs.add(new BasicNameValuePair("date", date));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e(DEBUG_TAG, "Error in http connection" + e.toString());
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-
8859-1"),8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result "+e.toString());
}
如您所见,我从服务器获取结果并将其转换为字符串。
然后我想将此字符串转换为JSONArray,如果它不是空的。如果它是空的,我想跳过它。
但是,如果转换后的结果字符串为null,我无法弄清楚如何捕获。
如果我这样做,请在上面的代码之后
itemsview.append("Result: " + result)
然后附加的文本为“null”。这是有道理的,因为db的返回结果(在此测试中)是空白的。
但是,如果我这样做以捕获空结果,
if (result.equals("null") {
itemsview.append("Result is null!");
}
文字没有出现。因此,如果我打印出结果字符串的值,则为null。但是当我在if中检查它的值为null时,那么它并不是真的。
我在这里缺少什么?
顺便说一下:如上所述,我正在做的是将结果字符串转换为JSONArray,然后将值插入List
答案 0 :(得分:1)
而不是
if (result.equals("null") {
itemsview.append("Result is null!");}
使用
if (result==null) {
itemsview.append("Result is null!");}
答案 1 :(得分:0)
我认为你检查结果== null而不是你正在做的事情更好:)欢呼:)