【发布时间】:2013-08-06 05:38:15
【问题描述】:
我正在使用 asyncTask 来完成对服务器的 http 请求。
在这种特定情况下,我使用它来进行身份验证并登录到服务器:
代码:
public class Http extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// Make http reguest and then get response
return result;
}
protected void onPostExecute(String result) {
System.out.println("Downloaded " + result + " bytes");
}
现在在我的主要活动中,我调用了
Http httpGet = new Http();
String result = httpGet.execute(baseUrl + "app_dev.php/client/login/" + tableNo);
但现在显然是由于异步,它在实际得到响应之前从方法返回。然后我需要分析。我的活动没有继续运行的意义。
我应该只运行一个while循环检查一个变量是否已设置。并在我的异步类中更改完成后的变量?
这样做的正确方法是什么?
【问题讨论】:
-
您预计需要等待多长时间才能收到回复?
-
它将通过本地 wifi 运行。不是互联网,所以如果它最多超过 5 秒,那么事情就很不对劲。如果一切正常,应该很快。
-
您期望
result是什么,您需要用它做什么?需要解析的 JSON 或 XML? -
现在它是一个尝试,但我希望它是 JSON。结果将包含一个 nonce 键和一些数据。
-
在您的问题得到满意答案后,通过单击绿色勾号将该答案选为有效答案是公平的。