我在Android Activity中使用volley,并发出请求并获得响应,但我想在另一种方法中处理响应,但它不会起作用,我该怎么办?
public class TestActivity extends Activity {
RequestQueue queue;
private String result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = "www.google.com/something/I/need";
queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Do something with the response
Log.i("resp", response);
// I want to do sth with the response out of here
// maybe like this, let result = response
// and see the log at the end of the code
// but it failed, what should I do?
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle error
Log.e("error", error.toString());
}
});
queue.add(stringRequest);
Log.e("result", result);
}
答案 0 :(得分:1)
Volley请求是异步的,因此程序在发送请求后,继续执行而不等待答案。因此,处理结果的代码将插入到OnResponse方法中。有关更精确的帮助,请说明您想要注销方法OnResponse
的原因答案 1 :(得分:0)
想想你正在做什么:你正在创建一个StringRequest
,然后将它添加到请求队列,但是你会立即尝试检查结果。显然,这不起作用,因为请求尚未处理。
您的回复将以onResponse
方式到达,只有这样您才能使用它做一些事情。您可以在此设置result = response
,但只有在调用onResponse
时才能看到值,这可能需要一些时间。
希望这能澄清事情。