最近我发布了一个关于Android HTTP-post AsyncHttpClient的问题。它位于:Android HTTP-post AsyncHttpClient以下是更新的方法。如您所见,这是一个布尔方法。我将done变量作为全局变量,当用户单击Login按钮时,我检查postLoginData是返回true还是false。我需要转到另一个活动,否则我会显示一个对话框。但是在一个新线程中将done设置为true并且我不能让我的主线程等待,因为这将导致另一个错误。我不确定我的工作应该是什么。我希望有人会发布一个使用AsyncHttpClient登录的教程。
public boolean postLoginData(String userid, String password) {
done = false;
params1.put("username", "");
params1.put("password", "");
Log.d("addteq", "Start Get Post");
AsyncHttpClient myClient = new AsyncHttpClient();
myClient.post("http://192.168.2.108/htdocs/?action=login",
params1, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
done = true;
System.out.println("login success");
}
});
return done;
}
答案 0 :(得分:3)
我的做法是错误的。该库处理后台线程中的计算: http://loopj.com/android-async-http/ 基于Apache的HttpClient库构建的基于异步回调的Android Http客户端。所有请求都是在应用程序的主UI线程之外发出的,但任何回调逻辑都将在使用Android的Handler消息传递创建回调的同一线程上执行。
答案 1 :(得分:0)
使用AsyncTask。
在postLoginData
内运行doInBackground(..)
并返回布尔值。然后,AsyncTask会处理它并再次在主线程中运行postExecute(..)
,您可以在其中开始新活动或显示对话框。