如何处理Android中Volley的响应

时间:2016-05-02 16:56:37

标签: android request android-volley

我在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);
}

2 个答案:

答案 0 :(得分:1)

Volley请求是异步的,因此程序在发送请求后,继续执行而不等待答案。因此,处理结果的代码将插入到OnResponse方法中。有关更精确的帮助,请说明您想要注销方法OnResponse

的原因

答案 1 :(得分:0)

想想你正在做什么:你正在创建一个StringRequest,然后将它添加到请求队列,但是你会立即尝试检查结果。显然,这不起作用,因为请求尚未处理。

您的回复将以onResponse方式到达,只有这样您才能使用它做一些事情。您可以在此设置result = response,但只有在调用onResponse时才能看到值,这可能需要一些时间。

希望这能澄清事情。