簡體   English   中英

使用http發布將數據發布到服務器,並在android中獲取響應為真

[英]Post Data to server using http post and get response true or false in android

我想使用AsyncTask發布EmailIDPassword並獲得響應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();
    }

}

在您的代碼中, resEntity包含您要查找的內容,即JSON字符串。 您可以通過訪問

InputStream inputStream = resEntity.getContent();

然后讀取字符串。 如何執行此操作的示例如下:
http://misha.beshkin.lv/httpresponse-entity-to-string/

但是,如果服務器端發生了任何意外情況,因此它不返回JSON,則需要在訪問Entity的內容之前將其找出來。 您可以通過檢查狀態碼來做到這一點:

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

然后,您可以檢查響應代碼。 如果是200,則表示“確定”,一切順利。 找不到404頁面,500是內部服務器錯誤,還有更多。 當然,這也取決於服務器的實現。
您可以在此處查找所有狀態代碼的定義:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

如果您只想知道自己的發布成功並且服務器回復“確定”,那么處理狀態碼可能對您來說已經足夠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM