检查是否从外部服务检索到空值

时间:2013-02-14 15:17:30

标签: android json web-services

我正在从外部数据库中检索值到一个Android应用程序,对服务器上的服务进行调用。这是php文件:

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$mysqli) {
    die('Connect Error (' . mysqli_connect_errno() . ') ' . sqli_connect_error());
}

$q=mysqli_query($mysqli, "SELECT title FROM post WHERE UPPER(title) LIKE UPPER('%" . $_REQUEST['searchThis'] . "%')");

while($e=mysqli_fetch_assoc($q)){
    $output[]=$e;
}

print(json_encode($output)); 
mysqli_close();

这就是我班级的作用(我只编写了重要的代码):

try{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(URL);
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
}
catch(Exception e){
    Log.e("CONNECTION_ERROR", "Error in http connection "+e.toString());
}

try{
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    result=sb.toString();

        ///-------------SYSTEM OUTS---------------

    System.out.println(result);
    System.out.println(result.getClass().getName());
}
catch(Exception e){
    Log.e("BUFFER_ERROR", "Error converting result "+e.toString());
}

//------------------PROBLEMS---------------
if(result.equalsIgnoreCase("null")){
    list.add("empty");
}

else{
    try{
        JSONArray jArray = new JSONArray(result);
        for(int i=0;i<jArray.length();i++){
            JSONObject json_data = jArray.getJSONObject(i);
            //Log.i("result",json_data.getString("title"));
            String title = json_data.getString("title");
            list.add(title);
        }
    }
    catch(JSONException e){
        Log.e("DATA_PARSING_ERROR", "Error parsing data "+e.toString());
    }
}
return list;

}

我尝试过日志和打印,我得到的是:

null //FOR System.out.println(result);
java.lang.String //for System.out.println(result.getClass().getName());

当服务器上的php服务返回某些内容时,它会起作用,问题是当我将结果与“null”进行比较时,即使结果是值为“null”的字符串,它也始终为false。然后我遇到了JSON异常,因为结果不是转换的有效格式。这可能有什么问题?

1 个答案:

答案 0 :(得分:2)

您的代码似乎没有考虑您附加的尾随换行符('\ n')。

您可以在while循环中删除换行符('\ n')的追加,也可以在检查“null”时将其删除。