服務器端的所有東西都按其應有的方式工作。我的問題在於,如果HTTP響應是「註冊成功!」,我不確定如何返回到登錄頁面。如果在Android中註冊成功,我該如何進入登錄活動?
我的Login和Register類都依賴於BackgroundTask來處理異步操作。
這裏是BackgroundTask的代碼。
public class BackgroundTask extends AsyncTask<String, Void, String> {
AlertDialog mAlertDialog;
Context context;
private CheckTask mCheckTask;
BackgroundTask(Context context, Boolean login, Boolean register) {
this.context = context;
mCheckTask = new CheckTask(login, register);
}
@Override
protected String doInBackground(String... params) {
String reg_url = "http://www.myegotest.com/register.php";
String login_url = "http://www.myegotest.com/login.php";
////////////////////////REGISTER SCRIPT/////////////////////////////
if (mCheckTask.getIsRegisterTask()) {
String first_name = params[0];
String last_name = params[1];
String username = params[2];
String password = params[3];
try {
//Set the URL we are working with
URL url = new URL(reg_url);
//Open a url connection and set params for the url connection
HttpURLConnection LucasHttpURLConnection = (HttpURLConnection) url.openConnection();
LucasHttpURLConnection.setRequestMethod("POST");
LucasHttpURLConnection.setDoOutput(true);
LucasHttpURLConnection.setDoInput(true);
//Retrieve the output stream
OutputStream os = LucasHttpURLConnection.getOutputStream();
//Create a buffered writer to write the data to the output stream output stream.
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
//Encode Data we are sending on the output stream
String data = URLEncoder.encode("first_name", "UTF-8") + "=" + URLEncoder.encode(first_name, "UTF-8") + "&" +
URLEncoder.encode("last_name", "UTF-8") + "=" + URLEncoder.encode(last_name, "UTF-8") + "&" +
URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8") + "&" +
URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
//Write the data to the output stream, and close buffered writer
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
//Close output stream
os.close();
//InputStream to get response
InputStream IS = LucasHttpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(IS, "iso-8859-1"));
String response = "";
String line;
while ((line = bufferedReader.readLine()) != null) {
response += line;
}
bufferedReader.close();
IS.close();
//LucasHttpURLConnection.disconnect();
return response;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//////////////////////////////////LOGIN SCRIPT/////////////////////////////////////////
} else if (mCheckTask.getIsLoginTask()) {
String username = params[0];
String password = params[1];
try {
URL url = new URL(login_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8") + "&" +
URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
//InputStream to get response
InputStream IS = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(IS, "iso-8859-1"));
String response = "";
String line;
while ((line = bufferedReader.readLine()) != null) {
response += line;
}
bufferedReader.close();
IS.close();
httpURLConnection.disconnect();
return response;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPreExecute() {
if (mCheckTask.getIsLoginTask()) {
mAlertDialog = new AlertDialog.Builder(context).create();
mAlertDialog.setTitle("Login Information... ");
} else {
mAlertDialog = new AlertDialog.Builder(context).create();
mAlertDialog.setTitle("Register Information... ");
}
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
if (result.equals("Please choose another username")) {
mAlertDialog.setMessage(result);
mAlertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
mAlertDialog.show();
} else if (result.equals("Registration success!")) {
mAlertDialog.setMessage(result);
mAlertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
mAlertDialog.show();
} else {
mAlertDialog.setMessage(result);
mAlertDialog.show();
}
}
}