我正在尝试使用ASP实现登录。Net Web Api导入Android应用程序。
到目前为止,我有一些功能,我想让登录请求是同步的,而不是异步的。我正在使用Android异步Http客户端,就像他们在他们的网站上说的。
public class ApiInterface {
public static final String ApiURL = "http://******/api/";
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get4Login(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url), params, responseHandler);
}
private static String getAbsoluteUrl(String relativeUrl) {
return ApiURL + relativeUrl;
}
}
我在LoginActivity中有这个函数:
private boolean doLogIn(String user, String pass) {
boolean result = false;
if (user.trim().isEmpty() || pass.trim().isEmpty()) {
return false;
}
RequestParams params = new RequestParams();
params.add("user", user);
params.add("pass", pass);
ApiInterface.get4Login("Auth", params, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable error) {
Toast.makeText(MyApp.getContext(), "Error: " + error.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
//***Here I want to set the doLogIn() function result depending on the response from the server;***
Toast.makeText(MyApp.getContext(), "Lista sesizari incarcata!", Toast.LENGTH_LONG).show();
}
});
return result;
}
有什么办法可以做到吗?
在您的MyTextHttpResponseHandler
类上应该定义一个名为result的变量,并设置类型为布尔值,默认为false,然后定义一个方法来获取结果值,如
public boolean getResult(){return this.result;}
然后可以在"onSuccess
"one_answers"onFailure
"方法上修改"result
"的值。接下来你的doLogIn
方法会像这样
private boolean doLogIn(String user, String pass) {
//boolean result = false;
if (user.trim().isEmpty() || pass.trim().isEmpty()) {
return false;
}
RequestParams params = new RequestParams();
params.add("user", user);
params.add("pass", pass);
MyTextHttpResponseHandler myTextHttpResponseHandler = new MyTextHttpResponseHandler(this);
ApiInterface.get4Login("Auth", params, myTextHttpResponseHandler);
return myTextHttpResponseHandler.getResult();
}