http投稿操作の結果を確認/検証するのに少し苦労しています。特定のエントリについてデータベースをチェックし、結果を 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 から返された結果が空白であるため、これは理にかなっています。
ただし、nullの結果をキャッチするためにこれを行うと、
if (result.equals("null") {
itemsview.append("Result is null!");
}
テキストは表示されません。したがって、結果の文字列の値を出力すると、null になります。しかし、if の値 null をチェックすると、true であることがわかりません。
ここで何が欠けていますか?
ところで:このコードの後に私がやっていることは、前述のように、結果の文字列を JSONArray に変換してから、値を List に挿入することです