我想使用EmailID
发布Password
和AsyncTask
并获得回复真或假,如何做到这一点。我们正在使用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();
}
}
答案 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”,那么处理状态代码对您来说已经足够了。