外部データベースから 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 例外が発生します。ここで何が間違っている可能性がありますか?