【问题标题】:how to make volley request in loop until specific response come如何在循环中发出截击请求,直到特定响应到来
【发布时间】:2018-02-12 14:15:39
【问题描述】:

如何使Volley 循环请求直到特定响应到来?

package raju.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.skyfishjy.library.RippleBackgroun;
public class xxx extends AppCompatActivity {
    int xi= 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xxx);
       StringRequest sr = new StringRequest("http://reju.pe.hu/test.php", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                if (response.contains("1")){
                    xi=1;
                }
                Log.w("res",response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        });
        while (xi==0){
            try {
                Thread.sleep(1000);
                RequestQueue xx = Volley.newRequestQueue(this);
                xx.add(sr);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

【问题讨论】:

  • 你能解决你的问题吗?

标签: java android networking android-volley


【解决方案1】:

在这里,我创建了一个名为 runRequest 的方法,其中包含您在上面给出的代码。我对代码所做的唯一更改是我正在等待对请求的响应,检查它是否是特定的响应。如果不是特定响应,则再次调用runRequest方法,如果是特定响应,则什么都不做。

public void runRequest() {
    StringRequest sr = new StringRequest("http://reju.pe.hu/test.php", new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            if (response.contains("1")) {
                //here comes the specific response
            } else {
                runRequest();
                //re run the request
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });
    RequestQueue xx = Volley.newRequestQueue(this);
    xx.add(sr);
}

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多