Android:httppost,问题检查结果

时间:2012-08-21 13:32:13

标签: android http-post

我正在努力检查/验证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

2 个答案:

答案 0 :(得分:1)

而不是

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

使用

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

答案 1 :(得分:0)

我认为你检查结果== null而不是你正在做的事情更好:)欢呼:)