使用http post将数据发布到服务器并在android中获取true或false的响应

时间:2013-03-14 10:30:14

标签: java android json http-post

我想使用EmailID发布PasswordAsyncTask并获得回复真或假,如何做到这一点。我们正在使用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();
    }

}

1 个答案:

答案 0 :(得分: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”,那么处理状态代码对您来说已经足够了。