java - 如果选择login.activity或register.activity有问题

标签 java php mysql android-studio

目前,我已经在 android stdio 中完成了登录和注册 Activity ,但是当我尝试时,它将继续使用 Else 语句 in protected void onPostExecute(String result)

我已经尝试从显示的对话框中获取 result.equals 值,例如 LoginSuccessful 和 RegisterSuccessful,但也没有成功。

如果其他部分出现问题,我该怎么办?

我尝试过很多方式改变它,但仍然不起作用。

import XXXXXXXXXX;(skip import thing)



public class BackgroundWorker extends AsyncTask<String,Void,String> {
    Context context;

    AlertDialog alertDialog;
    Intent intent;
    BackgroundWorker (Context ctx) {
        context = ctx;
    }
    @Override
    protected String doInBackground(String... params) {
        String type = params[0];
        String login_url="http://XXX.XXX.XX.XXX:XX/login.php";
        String register_url="http://XXX.XXX.XX.XXX:XX/register.php";
        if(type.equals("login")) {
            try {
                String user_name = params[1];
                String password = params[2];
                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 post_data = URLEncoder.encode("user_name","UTF-8")+"="+URLEncoder.encode(user_name,"UTF-8")+"&"
                        +URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8");
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else if(type.equals("register")){
            try {
                String name = params[1];
                String username = params[2];
                String password = params[3];
                String email = params[4];
                String phonenum = params[5];
                String age = params[6];
                URL url = new URL(register_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 post_data = URLEncoder.encode("name","UTF-8")+"="+URLEncoder.encode(name,"UTF-8")+"&"
                        +URLEncoder.encode("username","UTF-8")+"="+URLEncoder.encode(username,"UTF-8")+"&"
                        +URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8")+"&"
                        +URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email,"UTF-8")+"&"
                        +URLEncoder.encode("phonenum","UTF-8")+"="+URLEncoder.encode(phonenum,"UTF-8")+"&"
                        +URLEncoder.encode("age","UTF-8")+"="+URLEncoder.encode(age,"UTF-8")+"&";
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }

        return null;
    }

    @Override
    protected void onPreExecute() {
        alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.setTitle("Login Status");
    }

    @Override
    protected void onPostExecute(String result) {

        if(result.equals("LoginSuccessful")){

            Intent intent = new Intent(context, Userprofile.class);
            context.startActivity(intent);
        }
        if(result.equals("RegisterSuccessful")){

            Intent intent = new Intent(context, MainActivity.class);
            context.startActivity(intent);
        }
        else
        {
            alertDialog.setMessage(result);
            alertDialog.show();
        }

以下是我遇到的问题:

 protected void onPostExecute(String result) {

            if(result.equals("LoginSuccessful")){

                Intent intent = new Intent(context, Userprofile.class);
                context.startActivity(intent);
            }
            if(result.equals("RegisterSuccessful")){

                Intent intent = new Intent(context, MainActivity.class);
                context.startActivity(intent);
            }
            else
            {
            alertDialog.setMessage(result);
            alertDialog.show();
        }

如果没有记错的话,我认为问题是 if(result.equals("LoginSuccessful")) 中的值错误,或者我如何知道结果值(不是来自对话框)

最佳答案

正如您所建议的,问题很可能与 onPostExecute 方法中 result 的实际值有关。

您可以使用 Log.e(TAG,result); 记录 result 的值,然后在 Android Studio 的 Logcat 选项卡中查看日志。 onPostExecute 方法将变为:

protected void onPostExecute(String result) {

        if(result.equals("LoginSuccessful")){

            Intent intent = new Intent(context, Userprofile.class);
            context.startActivity(intent);
        }
        if(result.equals("RegisterSuccessful")){

            Intent intent = new Intent(context, MainActivity.class);
            context.startActivity(intent);
        }
        else
        {
            Log.e(getClass().getSimpleName(), "Registration failed: " + result);
        }
    }

关于java - 如果选择login.activity或register.activity有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268768/

相关文章:

java - 只需写入程序名称即可在不同编辑器中运行txt文件

javascript - Codeigniter 中不同 Controller 的不同 JavaScript、JQuery 或 CSS

php - 如何使用 php 更新 sql 中的图像

java - 应用程序崩溃时编辑对话框

Java:使用路径的 ZipFile

php - 下拉选择的项目在 mysql 数据库中无法正确显示

mysql - Symfony2-Doctrine2-MySql : Composite FK and PK

mysql - 删除超过 30 天(如果不是 1 号)

mysql - 如何在hive中的select语句中编写带有附加列的子查询,该附加列的单个值是通过某些行的总和获得的

java - 我无法完成线程(可运行),这是怎么回事?