Java 登录不';我在安卓工作室什么都不做
我正在使用安卓截击来进行登录验证。但是,当单击登录按钮时,它不起作用。我还添加了一个Java 登录不';我在安卓工作室什么都不做,java,android,mysql,android-volley,Java,Android,Mysql,Android Volley,我正在使用安卓截击来进行登录验证。但是,当单击登录按钮时,它不起作用。我还添加了一个 <uses-permission android:name="android.permission.INTERNET" /> 在AndroidManifest.xml中,我检查了服务器是否有响应,以及邮递员(Chrome扩展名)是否没有错误。我在onClick事件(在XML上)上添加了一个“displayMessage” 这是我的身份验证。java(它处理GUI,我向LoginRequest发
<uses-permission android:name="android.permission.INTERNET" />
在AndroidManifest.xml中,我检查了服务器是否有响应,以及邮递员(Chrome扩展名)是否没有错误。我在onClick事件(在XML上)上添加了一个“displayMessage”
这是我的身份验证。java(它处理GUI,我向LoginRequest发出请求以处理我的登录)
。。。
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.toolbox.volley;
导入org.json.JSONException;
导入org.json.JSONObject;
...
公共无效显示消息(视图v){
TextView messageText=(TextView)findViewById(R.id.message\u text);
EditText usernameField=(EditText)findViewById(R.id.usernameField);
EditText密码字段=(EditText)findViewById(R.id.passwordField);
//获取用户名和密码
最后一个字符串strUsername=usernameField.getText().toString();
字符串strPassword=passwordField.getText().toString();
//获取字符串的长度
int intUsername=usernameField.getText().length();
int intPassword=passwordField.getText().length();
if(strUsername.matches(“”){
setText(“请输入有效的用户名!”);
}否则如果(intUsername<3){
setText(“用户名长度不够!”);
}否则如果(intUsername>16){
setText(“用户名长度超过最大值!”);
}else if(strPassword.matches(“”){
setText(“请输入有效密码!”);
}否则如果(intPassword<6){
setText(“密码长度不够!”);
}否则如果(intPassword>32){
setText(“密码长度超过最大值!”);
}否则{
Response.Listener responseListener=新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jsonResponse=新的JSONObject(响应);
boolean success=jsonResponse.getBoolean(“success”);
String requestMessage=jsonResponse.getString(“消息”);
如果(成功){
String UUID=jsonResponse.getString(“唯一用户id”);
String last_login=jsonResponse.getString(“last_login”);
String registration_date=jsonResponse.getString(“registration_date”);
意图i=新意图(Authentication.this,Mainpage.class);
i、 putExtra(“用户名”,结构名称);
i、 putExtra(“UUID”,UUID);
i、 putExtra(“上次登录”,上次登录);
i、 putExtra(“注册日期”,注册日期);
星触觉(i);
}否则{
TextView messageText=(TextView)findViewById(R.id.message\u text);
messageText.setText(requestMessage);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
};
LoginRequest LoginRequest=新的LoginRequest(strUsername、strPassword、responseListener);
RequestQueue=Volley.newRequestQueue(this);
添加(loginRequest);
}
}
这是我的LoginRequest.java(它处理来自Authentication.java的请求)
。。。
导入com.android.volley.Response;
导入com.android.volley.toolbox.StringRequest;
导入java.util.HashMap;
导入java.util.Map;
...
公共类LoginRequest扩展了StringRequest{
私有静态最终字符串登录\u请求\u URL=”http://blocktest.pe.hu/bta-api/api/v1/request.php";
私有映射参数;
公共登录请求(字符串用户名、字符串密码、响应.侦听器){
super(Method.POST,LOGIN\u REQUEST\u URL,listener,null);
params=新的HashMap();
参数put(“用户名”,用户名);
参数put(“密码”,密码);
}
@凌驾
公共MapgetParams(){
返回参数;
}
}
我的代码运行良好。不过我跳过了验证。您可能需要再次检查请求是否确实被提出。我使用的是'com.android.volley:volley:1.0.0'
。您可能还需要添加ErrorListener,以便在发出请求时出现问题时通知您。我已与邮递员检查了m POST请求,该请求有效。我不知道如何添加ErrorListener,因为我是Android开发的新手。@AhmadFadli有什么建议吗?我已经检查了截图是否正在编译,它是否正在编译。您可以在LoginRequest构造函数中的super()
的第四个参数中提供错误侦听器。我应该把它放在什么位置?
...
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
...
public void displayMessage(View v){
TextView messageText = (TextView)findViewById(R.id.message_text);
EditText usernameField = (EditText)findViewById(R.id.usernameField);
EditText passwordField = (EditText)findViewById(R.id.passwordField);
// Fetch Username and Password
final String strUsername = usernameField.getText().toString();
String strPassword = passwordField.getText().toString();
// Fetch Length of Strings
int intUsername = usernameField.getText().length();
int intPassword = passwordField.getText().length();
if(strUsername.matches("")){
messageText.setText("Please put a valid username!");
} else if(intUsername < 3){
messageText.setText("Username length is not enough!");
} else if(intUsername > 16){
messageText.setText("Username length exceeded to maximum value!");
} else if(strPassword.matches("")) {
messageText.setText("Please put a valid password!");
} else if(intPassword < 6){
messageText.setText("Password length is not enough!");
} else if(intPassword > 32){
messageText.setText("Password length exceeded to maximum value!");
} else {
Response.Listener<String> responseListener = new Response.Listener<String>(){
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
String requestMessage = jsonResponse.getString("message");
if (success){
String UUID = jsonResponse.getString("unique_user_id");
String last_login = jsonResponse.getString("last_login");
String registration_date = jsonResponse.getString("registration_date");
Intent i = new Intent(Authentication.this, Mainpage.class);
i.putExtra("username", strUsername);
i.putExtra("UUID", UUID);
i.putExtra("last_login", last_login);
i.putExtra("registration_date", registration_date);
startActivity(i);
} else {
TextView messageText = (TextView)findViewById(R.id.message_text);
messageText.setText(requestMessage);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(strUsername, strPassword, responseListener);
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(loginRequest);
}
}
...
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
...
public class LoginRequest extends StringRequest {
private static final String LOGIN_REQUEST_URL = "http://blocktest.pe.hu/bta-api/api/v1/request.php";
private Map<String, String> params;
public LoginRequest(String username, String password, Response.Listener<String> listener){
super(Method.POST, LOGIN_REQUEST_URL, listener, null);
params = new HashMap<>();
params.put("username", username);
params.put("password", password);
}
@Override
public Map<String, String>getParams() {
return params;
}
}