java - 如何在循环中发出 Volley 请求,直到出现特定响应

标签 java android networking android-volley

如何在循环中发出 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();
            }
        }
    }
}

最佳答案

在这里,我创建了一个名为 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);
}

关于java - 如何在循环中发出 Volley 请求,直到出现特定响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748514/

相关文章:

java - 从方法传递变量以绘制一条线 - Java

android - Android Studio 中的项目不再起作用

Android:如何将单选按钮设置为 'grey out'

Docker 服务器网络 - 拒绝传入连接但允许传出

java - Java中如何停止线程?

java - jni 调用之间在 native 代码中分配的内存

来自图库方向的 Android 图片

Windows 网络名称解析

Java 网络阻塞方法和 while 循环

java - Java 源文件中的新行 : How to test for them using Character class?