Android 我想设置字段值以使用Volley RequestQueue,但不使用';行不通
我英语不好,所以部分使用翻译,对不起 我想使用Volley RequestQueue将字段值“result”设置为实例“result.Success”或“result.Error”。 RequestQueue在AppHelper类中声明为静态变量,并将请求对php的响应,返回“OK”或“Fail”或任何SQLException消息作为字符串 但它并不能很好地工作,具体地说,RequestQueue总是在“login”方法返回值(总是null)并结束后工作。Android 我想设置字段值以使用Volley RequestQueue,但不使用';行不通,android,android-volley,Android,Android Volley,我英语不好,所以部分使用翻译,对不起 我想使用Volley RequestQueue将字段值“result”设置为实例“result.Success”或“result.Error”。 RequestQueue在AppHelper类中声明为静态变量,并将请求对php的响应,返回“OK”或“Fail”或任何SQLException消息作为字符串 但它并不能很好地工作,具体地说,RequestQueue总是在“login”方法返回值(总是null)并结束后工作。 final static String
final static String url = "http://60.253.14.126:8080/MyServer/Android/login_pass.php";
Result<LoggedInUser> result;
public Result<LoggedInUser> login(String username, String password) {
result = null;
try {
final StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response == "OK") {
LoggedInUser user = new LoggedInUser(java.util.UUID.randomUUID().toString(), username);
result = new Result.Success<>(user);
}
else {
result = new Result.Error(new IOException("Check ID or password"));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
result = new Result.Error(error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("id", username);
params.put("pw", password);
return params;
}
};
stringRequest.setShouldCache(false);
AppHelper.requestQueue.add(stringRequest);
return result;
} catch (Exception e) {
return new Result.Error(new IOException("Error logging in", e));
}
}
它从不起作用,陷入无限的等待。此外:
RequestFuture<String> future = RequestFuture.newFuture();
...
future.setRequest(AppHelper.requestQueue.add(stringRequest));
future.get(3, TimeUnit.SECONDS);
return result;
RequestFuture=RequestFuture.newFuture();
...
setRequest(AppHelper.requestQueue.add(stringRequest));
future.get(3,TimeUnit.SECONDS);
返回结果;
它只是从RequestFuture返回超时异常。我可以使用截击返回值吗?还是我用截击作为一种根本错误的方式
RequestFuture<String> future = RequestFuture.newFuture();
...
future.setRequest(AppHelper.requestQueue.add(stringRequest));
future.get(3, TimeUnit.SECONDS);
return result;