0

我在检查/验证 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,然后将值插入到列表中

4

2 回答 2

1

代替

if (result.equals("null") {
itemsview.append("Result is null!");}

利用

if (result==null) {
itemsview.append("Result is null!");}
于 2012-08-21T13:42:23.307 回答
0

我认为最好检查 result==null 而不是你在做什么 :) 干杯 :)

于 2012-08-21T13:37:04.927 回答