简体   繁体   English

我无法登录或注册我的应用

[英]I cant login or register to my app

I have a problem with my app. 我的应用程序有问题。 When I want to login or register the ProgressDialog will be show and never cancel. 当我要登录或注册时,将显示ProgressDialog并且永远不会取消。 During the app is running it must cancel and "ok" Message must be shown. 在应用运行期间,它必须取消并且必须显示“确定”消息。

Here is my code: 这是我的代码:

Main 主要

package com.example.server;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

public class Main extends Activity {

private ImageView login,register;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    login=(ImageView) findViewById(R.id.main_login);
    register=(ImageView) findViewById(R.id.main_register);


    login.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent lo=new Intent(Main.this,login.class);
            startActivity(lo);

        }
    });



    register.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {

            Intent lo=new Intent(Main.this,register.class);
            startActivity(lo);              

        }
    });




}






}

login 登录

package com.example.server;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

public class login extends Activity{



private ImageView login,exit;
private EditText usertext,passtext;

public static String res="";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);



    login=(ImageView) findViewById(R.id.login_login);
    exit=(ImageView) findViewById(R.id.login_exit);

    usertext=(EditText) findViewById(R.id.usertext);
    passtext=(EditText) findViewById(R.id.passtext);


    login.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            login(usertext.getText().toString(),passtext.getText().toString());

        }
    });




    exit.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {

            finish();


        }
    });




}

public void login(String user,String pass){

    new loginserver("http://ujo.ir/login,php",user,pass).execute();

    final ProgressDialog pd=new ProgressDialog(login.this);
    pd.setMessage("Loading...");
    pd.show();

    final Timer tm=new Timer();
    tm.schedule(new TimerTask() {
        public void run() {
        runOnUiThread(new Runnable() {
        public void run() {

            if(!res.equals("")){
                pd.cancel();
                Toast.makeText(getApplicationContext(), res, Toast.LENGTH_LONG).show();
                res="";
                tm.cancel();
            }
            }
        });

        }
    }, 1, 1000);


}






}

register 寄存器

package com.example.server;

import java.io.ObjectOutputStream.PutField;
import java.util.Timer;
import java.util.TimerTask;
import com.example.server.R.layout;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;


public class register extends Activity{

public static String res="";
private ImageView register,exit;
private EditText name,family,user,pass,email;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register);


    name=(EditText) findViewById(R.id.re_name);
    family=(EditText) findViewById(R.id.re_family);
    user=(EditText) findViewById(R.id.re_user);
    pass=(EditText) findViewById(R.id.re_pass);
    email=(EditText) findViewById(R.id.re_email);


    register=(ImageView) findViewById(R.id.re_register);
    exit=(ImageView) findViewById(R.id.re_exit);




    exit.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            finish();

        }
    });



    register.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {


        register1(name.getText().toString(),family.getText().toString(),user.getText().toString(),pass.getText().toString(),email.getText().toString());

        }
    });


}

public void register1(String name,String family,String user,String pass,String email){

    new registerserver("http://ujo.ir/register.php", name, family, user, pass, email).execute();

    final ProgressDialog pd=new ProgressDialog(register.this);
    pd.setMessage("Loading...");
    pd.show();

    final Timer tm=new Timer();
    tm.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            runOnUiThread(new Runnable() {
                public void run() {

            if(!res.equals("")){    
            pd.cancel();
            Toast.makeText(getApplicationContext(), res, Toast.LENGTH_LONG).show();
            res="";
            tm.cancel();

            }
        }
    });


        }
    }, 1, 1000);


}



}

registerserver 注册服务器

package com.example.server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import android.os.AsyncTask;



public class registerserver extends AsyncTask{

private String Link="";

private String Name="";
private String Family="";

private String User="";
private String Pass="";

private String Email="";


public registerserver(String link,String name,String family,String user,String pass,String email){

    Link=link;
    Name=name;
    Family=family;
    User=user;
    Pass=pass;
    Email=email;
}



@Override
protected String doInBackground(Object... arg0) {


    try{

        String data=URLEncoder.encode("name","UTF8")+"="+URLEncoder.encode(Name,"UTF8");
        data+="&"+URLEncoder.encode("family","UTF8")+"="+URLEncoder.encode(Family,"UTF8");

        data+="&"+URLEncoder.encode("username","UTF8")+"="+URLEncoder.encode(User,"UTF8");
        data+="&"+URLEncoder.encode("password","UTF8")+"="+URLEncoder.encode(Pass,"UTF8");
        data+="&"+URLEncoder.encode("email","UTF8")+"="+URLEncoder.encode(Email,"UTF8");
        data+="&"+URLEncoder.encode("status","UTF8")+"="+URLEncoder.encode("a","UTF8");

        URL mylink=new URL(Link);
        URLConnection connect=mylink.openConnection();

        connect.setDoOutput(true);
        OutputStreamWriter wr=new OutputStreamWriter(connect.getOutputStream());
        wr.write(data);
        wr.flush();


        BufferedReader reader=new BufferedReader(new InputStreamReader(connect.getInputStream()));
        StringBuilder sb=new StringBuilder();

        String line=null;

        while((line=reader.readLine()) !=null){

            sb.append(line);

        }

        register.res=sb.toString();




    }catch(Exception e){



    }



    return "";
}

}

There are two error. 有两个错误。

  1. In loginserver.java , the variable assignment is reversed in constructor 在loginserver.java中,变量分配在构造函数中反转

Your code is 您的代码是

   public loginserver(String link,String user,String pass){

        link=Link;
        user=User;
        pass=Pass;

    }

It should be 它应该是

    public loginserver(String link, String user, String pass) {

    Link = link;
    User = user;
    Pass = pass;

    } 
  1. It is a typo in your login.java 这是您login.java中的错字

In your code 在你的代码中

    new loginserver("http://ujo.ir/login,php",user,pass).execute();

Its login.php not login,php 其login.php未登录,php

I changed these two and logged in using the user id and password . 我更改了这两个并使用用户ID和密码登录。 I got the toast message "ok" 我收到了吐司消息“好”

If you are making a http connection , it would be good to use HttpURLConnection instead of URLconnection as it provides extra API to deal with http connections. 如果您正在建立http连接,则最好使用HttpURLConnection代替URLconnection,因为它提供了额外的API来处理http连接。 I have attached the code for loginserver.java 我已经附上了loginserver.java的代码

     protected String doInBackground(Object... arg0) {

        try {

            String data=URLEncoder.encode("username","UTF8")+"="+URLEncoder.encode(User,"UTF8");
            data+="&"+URLEncoder.encode("password","UTF8")+"="+URLEncoder.encode(Pass,"UTF8");
            Log.i("loginserver","loginserver is called"+data);//helped to find the error 1

            URL mylink=new URL(Link);
            HttpURLConnection connect=(HttpURLConnection) mylink.openConnection();
            connect.setDoOutput(true);
            connect.setChunkedStreamingMode(0);

            OutputStreamWriter wr=new OutputStreamWriter(connect.getOutputStream());
            wr.write(data);
            wr.flush();
            Log.i("loginserver","after flush"+connect.getResponseCode());//helped to find the error 2
            BufferedReader reader=new BufferedReader(new InputStreamReader(connect.getInputStream()));
            StringBuilder sb=new StringBuilder();
            String line=null;
            while((line=reader.readLine()) != null){
                Log.i("loginserver","we enter while");
            sb.append(line);    

            }

            login.res=sb.toString();
            Log.i("loginserver","value is" + login.res);


        } catch (Exception e) {


        }


        return "";
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM