【发布时间】:2016-03-10 20:35:30
【问题描述】:
我正在使用 Volley 向我的 Web Api 发出 Http 请求。 但是,由于 Volley 的异步特性,我无法从我的 api 调用中获取值。 我已经读过使用回调函数可以帮助解决这个问题,但是我不知道如何实现这样的解决方案。
在以下场景中我将如何实现回调函数?
public class Main
{
String name;
WebServiceConnections wsc = new WebServiceConnections();
name = wsc.getNameFromWeb();
System.out.println("Name: " + name);
}
public class WebServiceConnections
{
public String getNameFromWeb()
{
String url = "http://nameservice.net/GetName";
JsonArrayRequest req = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
return response.getString("Name");
}
catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
}
}
此代码的问题是,当调用打印语句时,Main 中的变量“name”将为空,因为 WebServiceConnections 类中的异步方法不会在调用打印语句时完成。
回调是解决这个问题的好方法吗?
【问题讨论】:
-
@BNK 谢谢你的回答很有帮助!
标签: java http asynchronous callback android-volley