我正在使用 ASyncHttpClient 及其工作进行简单的“获取”,并在 onSuccess() 函数中为我提供正确的 json 响应,但是当我尝试将字符串响应保存到变量并在函数中返回该变量时,它总是返回一个空字符串。
代码:
public class HttpRequests
{
public String jsonString = "";
public String add_guest(String name, String id, String hardware_id)
{
AsyncHttpClient client = new AsyncHttpClient();
String url = "http://www.mysite.com/api.php?name="+name+"&id="+id+"&hardware_id="+hardware_id;
client.get(url, new JsonHttpResponseHandler()
{
@Override
public void onSuccess(JSONObject response)
{
jsonString = response.toString();
//this successfully ouputs the json response in LogCat
Log.d("response:",jsonString);
}
@Override
public void onFailure(Throwable e)
{
Log.d("http error:",e.toString());
}
});
//this returns ""
return jsonString;
}
}
好像 onSuccess 中的 jsonString 与我返回的 jsonString 不在同一范围内。这背后的原因是我有很多 api 调用并希望将它们全部保存在同一个类中,然后在我需要它们时从其他各种类调用它们并从那里解析 json。我也尝试返回 json 对象而不是字符串,但与此相同..它只是从另一个类中出现空白。(它没有在 onSuccess 中正确设置)
有任何想法吗..?
编辑:
对不起,我应该澄清一下。我正在从我的其他班级打电话给 add_guest。这是来自我的另一堂课:
String response = "";
HttpRequests myRequest = new HttpRequests();
response = myRequest.add_guest("bob","1","123");
现在通过调用 add_guest 这应该反过来调用 JsonHttpResponseHandler 它“应该”将 jsonString 设置为响应并返回它..除非我错过了一些东西..