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

时间:2015-08-05 14:48:07

标签: java android

我的应用有问题。当我想登录或注册时,class SocketHandler(tornado.websocket.WebSocketHandler): def get(self, *args, **kwargs): if self.get_current_user(): ... super(SocketHandler, self).get(*args, **kwargs) else: ... 将显示并永不取消。在应用程序运行期间,它必须取消并且必须显示“ok”消息。

这是我的代码:

主要

ProgressDialog

登录

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);              

        }
    });




}






}

注册

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);


}






}

registerserver

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);


}



}

1 个答案:

答案 0 :(得分:1)

有两个错误。

  1. 在loginserver.java中,变量赋值在构造函数
  2. 中相反

    您的代码是

       public loginserver(String link,String user,String pass){
    
            link=Link;
            user=User;
            pass=Pass;
    
        }
    

    应该是

        public loginserver(String link, String user, String pass) {
    
        Link = link;
        User = user;
        Pass = pass;
    
        } 
    
    1. 这是您的login.java
    2. 中的拼写错误

      在您的代码中

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

      它的login.php没有登录,php

      我更改了这两个并使用用户ID和密码登录。 我得到了祝酒词" ok"

      如果您正在建立http连接,那么使用它会很好 HttpURLConnection而不是URLconnection,因为它提供额外的API来处理http连接。我附上了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 "";
          }