我的应用有问题。当我想登录或注册时,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);
}
}
答案 0 :(得分:1)
有两个错误。
您的代码是
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;
}
在您的代码中
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 "";
}