我在检查/验证 http post 操作的结果方面有点挣扎。我正在检查数据库中的某些条目,然后将结果转换为 JSONArray。但是,如果结果为空,我不想尝试转换。我正在捕获异常,因此如果结果为零,程序不会崩溃,但我想避免尝试将空结果一起转换。
我正在像这样连接到数据库(通过 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 如果它不为空。如果它是空的,我想跳过它。
但是,我无法弄清楚如何捕捉转换后的结果字符串是否为空。
如果我这样做,在上面的代码之后,
itemsview.append("Result: " + result)
那么附加的文本是“null”。这是有道理的,因为从数据库返回的结果(在这个测试中)是空白的。
但是,如果我这样做是为了捕获 null 结果,
if (result.equals("null") {
itemsview.append("Result is null!");
}
文字没有出现。所以,如果我打印出结果字符串的值,它是空的。但是,当我检查 if 中的 null 值时,结果并非如此。
我在这里想念什么?
顺便说一句:如前所述,我在这段代码之后所做的是将结果字符串转换为 JSONArray,然后将值插入到列表中