0

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 に挿入することです

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 に答える