简体   繁体   中英

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. 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

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

In your code

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

Its login.php not login,php

I changed these two and logged in using the user id and password . 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. I have attached the code for 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 "";
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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