如果return语句设置为0或1,则登录系统的这一方面工作正常,但如果使用null,则失败。这一切都是从http://256design.com/blog/android-login-asynctask/改编而来的,在这里这个特定的返回看起来像我自己的代码下面列出的。
public LoginTask(Polling activity, ProgressDialog progressDialog)
{
this.activity = activity;
this.progressDialog = progressDialog;
}
protected Integer doInBackground(String... arg0) {
EditText userName = (EditText)activity.findViewById(R.id.emailEditText);
EditText passwordEdit = (EditText)activity.findViewById(R.id.passEditText);
String email = userName.getText().toString();
String password = passwordEdit.getText().toString();
UserFunctions userFunction = new UserFunctions();
JSONObject json = userFunction.loginUser(email, password);
progressDialog.dismiss();
// check for login response
//Log.v("test", Integer.toString(jsonParser.getResponseCode()));
try {
if (json.getString(KEY_SUCCESS) != null) {
//loginErrorMsg.setText("");
//loginFragment.loginErrorMsg.setText("Success");
String res = json.getString(KEY_SUCCESS);
if(Integer.parseInt(res) == 1){
//user successfully logged in
// Store user details in SQLite Database
DatabaseHandler db = new DatabaseHandler(activity.getApplicationContext());
JSONObject json_user = json.getJSONObject("user");
//Log.v("name", json_user.getString(KEY_NAME));
// Clear all previous data in database
userFunction.logoutUser(activity.getApplicationContext());
db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_EMAIL),
json.getString(KEY_UID), json_user.getString(KEY_CREATED_AT));
// Close Login Screen
//finish();
//loginErrorMsg = (TextView)activity.findViewById(R.id.loginErrorMsg);
//loginErrorMsg.setText("logged in");
//passwordEdit.setText("");
}else{
// Error in login
//progressDialog.setMessage("Incorrect username or password");
//loginErrorMsg.setText("Incorrect username/password");
}
}
} catch (NullPointerException e) {
e.printStackTrace();
}
catch (JSONException e) {
e.printStackTrace();
}
return 1;
}
我使用的教程,看看responsecode:
protected Integer doInBackground(String... arg0)
{
String result = "";
int responseCode = 0;
try
{
HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.256design.com/projectTransparency/project/headerLogin.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("emailAddress", arg0[0]));
nameValuePairs.add(new BasicNameValuePair("password", arg0[1]));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
int executeCount = 0;
HttpResponse response;
do
{
progressDialog.setMessage("Logging in.. ("+(executeCount+1)+"/5)");
// Execute HTTP Post Request
executeCount++;
response = client.execute(httppost);
responseCode = response.getStatusLine().getStatusCode();
// If you want to see the response code, you can Log it
// out here by calling:
// Log.d("256 Design", "statusCode: " + responseCode)
} while (executeCount < 5 && responseCode == 408);
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String line;
while ((line = rd.readLine()) != null)
{
result = line.trim();
}
id = Integer.parseInt(result);
}
catch (Exception e) {
responseCode = 408;
e.printStackTrace();
}
return responseCode;
}
最佳答案
目的是将作业的结果(在工作线程上执行)传递给onPostExecute
,以便在ui线程上处理结果。如果要更新用户界面以响应成功的作业运行,则此操作是必需的。