0

EmailID投稿しPasswordて使用しAsyncTask、TrueまたはFalseの応答を取得したいのですが、その方法を教えてください。を使用してjsonいます。いくつかのリンクを見ましたが、理解できません。以下は私のコードです。前もって感謝します。

private class GetLoginDataTask extends AsyncTask<Void, Void, String[]> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        m_ProgressDialog = ProgressDialog.show(Login.this, "Please wait..", "Retrieving data ...", true);
        m_ProgressDialog.setContentView(R.layout.progress);
        m_ProgressDialog.show();
    }

    @Override
    protected String[] doInBackground(Void... params) {
        // Simulates a background job.
        String mStrings[] = { "" };
        try {
            HttpClient client = new DefaultHttpClient();
            String postURL = "http://192.168.0.126/MeritServices/MeritService.svc/Login";
            HttpPost post = new HttpPost(postURL);
            List<NameValuePair> param = new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("EmailID", strEmail));
            param.add(new BasicNameValuePair("Password", strPassword));
            UrlEncodedFormEntity ent = new UrlEncodedFormEntity(param, HTTP.UTF_8);
            post.setEntity(ent);
            HttpResponse responsePOST = client.execute(post);
            HttpEntity resEntity = responsePOST.getEntity();
            if (resEntity != null) {
                Log.i("RESPONSE :::: ", EntityUtils.toString(resEntity));
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("ERROR ::: ", e.toString());
        }
        return mStrings;

    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String[] result) {
        System.out.println("ProgressBar Dismiss");
        super.onPostExecute(result);
        m_ProgressDialog.dismiss();
    }

}
4

1 に答える 1

0

コードにresEntityは、探しているコンテンツ、つまり JSON 文字列が含まれています。次の方法でアクセスできます

InputStream inputStream = resEntity.getContent();

次に、文字列を読み取ります。これがどのように行われるかの例は次のとおりです:
http://misha.beshkin.lv/httpresponse-entity-to-string/

ただし、サーバー側で予期しないことが発生して JSON が返されない場合は、エンティティのコンテンツにアクセスする前にそれを確認する必要があります。ステータスコードを確認することでそれを行うことができます:

Integer responseCode = responsePOST.getStatusLine().getStatusCode();

その後、応答コードを確認できます。200 なら「OK」で、すべてうまくいきました。404 はページが見つかりません、500 は内部サーバー エラーで、他にもたくさんあります。もちろん、サーバーの実装にも依存します。
ここですべてのステータス コードの定義を調べることができます:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

投稿が成功し、サーバーが「OK」と応答したことだけを知りたい場合は、ステータス コードを処理するだけで十分でしょう。

于 2013-03-14T11:08:17.973 に答える