【问题标题】:I am creating change password functionality in my android application which crashing on getResponsecode()我正在我的 android 应用程序中创建更改密码功能,该功能在 getResponsecode() 上崩溃
【发布时间】:2017-04-21 08:37:17
【问题描述】:

我提供了 onCreate() 和 New password 方法,在调试时,它在 getResponsecode() 上崩溃。它正在崩溃并且没有得到响应。它不会得到服务器的响应。

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.change_password_activity);
        list(getIntent().getExtras().getString("JSON_Object"));
        CurrentPwdCheck();
        NewpwdCheck();

        btnSubmit= (Button) findViewById(R.id.btnSubmit);
        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                try {
                    NewPwd();
                } catch (IOException e) {
                    e.printStackTrace();

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public void NewPwd() throws IOException, JSONException {

        String myPwd=new_pwd.getText().toString();

        String Surl="http://inmeets.com/ChangePwd.php?uid="+uid+"&NewPwd="+myPwd;

        URL url = null;
        HttpURLConnection conn = null;


            url = new URL(Surl);
        conn = (HttpURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setConnectTimeout(1000);
       if( conn.getResponseCode()==203) {
           Toast.makeText(getBaseContext(), "your password changed", Toast.LENGTH_SHORT).show();
       }
    }

【问题讨论】:

  • 在这里放一些错误日志。
  • android.os.NetworkOnMainThreadException java.io.FileNotFoundException:/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state:打开失败:ENOENT(没有这样的文件或目录)
  • 您是否使用任何数据库来存储您的登录凭据?
  • 先打印响应代码,然后确定您的条件。
  • @GowthamSubramaniam 不先生,我正在使用文件系统概念并将其存储在后端服务器上的 html 文件中我使用过 php,我应该将 php 代码放在这里吗?

标签: android performance android-internet


【解决方案1】:

您不能从主线程执行网络操作,因为它会减慢 UI。创建一个新的 AsyncTask 以与您的服务器交互。

【讨论】:

  • 好的,只有异步任务选项吗?把它从主线程中分离出来?
  • 有很多选项,但 AsyncTask 是最常见的。 AsyncTask 有什么问题吗?
  • @ Ahamad Anees 不,异步任务没有问题,在调试时从服务器获取响应有问题,我的应用程序在获取响应时崩溃
  • AsyncTask 会更好更简单。
  • 检查您的响应是否等于您的 JSON 响应?
【解决方案2】:

您也可以使用线程来代替 AsyncTask。但是 AsyncTask 会更好,因为它比线程中的线程更智能,您必须管理所有事情,例如在后台运行网络调用并在主线程中更新 UI。 如果你真的想要一些不同于 AsyncTask 的东西,下面是线程概念

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.change_password_activity);
            list(getIntent().getExtras().getString("JSON_Object"));
            CurrentPwdCheck();
            NewpwdCheck();

            btnSubmit= (Button) findViewById(R.id.btnSubmit);
            btnSubmit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    try {
                       NewPasword pwd = new NewPasword();
                       pwd.start(); 
                    } catch (IOException e) {
                        e.printStackTrace();

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });
        }

    class NewPasword extends Thread{
            @Override
            public void run() {
            String myPwd=new_pwd.getText().toString();

            String Surl="http://inmeets.com/ChangePwd.php?uid="+uid+"&NewPwd="+myPwd;

            URL url = null;
            HttpURLConnection conn = null;


                url = new URL(Surl);
            conn = (HttpURLConnection)url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(1000);
           if( conn.getResponseCode()==203) {
     getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                                   Toast.makeText(getBaseContext(), "your password 
                     changed", Toast.LENGTH_SHORT).show();
                    }
                });

           }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2018-06-23
    • 2021-01-09
    相关资源
    最近更新 更多