Android Volley:为什么这两个请求的第二个请求会超时失败?

问题描述

这听起来很简单,我使用 volley 请求两个 JSON 数据包,但第二个失败 - 如果我忽略第一个,一切正常。如果我多次重新查询 test1() ,它甚至会失败。

    private void test1()
    {
    JsonArrayRequest req =
            new JsonArrayRequest(Request.Method.GET,"https://www.impfterminservice.de/assets/static/its/vaccination-list.json",null,new Response.Listener<JSONArray>()
                                     {
                                     @Override
                                     public void onResponse(JSONArray response)
                                         {
                                         test2();
                                         }
                                     },new Response.ErrorListener()
                                     {
                                     @Override
                                     public void onErrorResponse(VolleyError error)
                                         {
                                         test2();
                                         }
                                     }
            );
    BaseMainApp.getVolleyRequestQueue(m_Context).add(req);
    }

private void test2()
    {
    JsonObjectRequest req =
            new JsonObjectRequest(Request.Method.GET,"https://002-iz.impfterminservice.de/rest/suche/termincheck?plz=78224&leistungsmerkmale=L922",new Response.Listener<JSONObject>()
                                     {
                                     @Override
                                     public void onResponse(JSONObject response)
                                         {
                                         // does not arrive here
                                         }
                                     },new Response.ErrorListener()
                                     {
                                     @Override
                                     public void onErrorResponse(VolleyError error)
                                         {
                                         // OUCH!!!
                                         }
                                     }
            );
    BaseMainApp.getVolleyRequestQueue(m_Context).add(req);
    }

我认为可能是 cookie 缓存,但我尝试不使用缓存

        Cache   cache   = new NoCache();
        Network network = new BasicNetwork(new HurlStack());

        m_VolleyRequestQueue = new RequestQueue(cache,network);
        m_VolleyRequestQueue.start();

或者我试图删除缓存,...无济于事。我也试过延迟第二次查询,创建一个新的RequestQueue,...我真的需要重新启动应用程序!

那里发生了什么?是什么导致服务器拒绝我的请求(并超时拒绝)?

顺便说一句 - 如果第一个查询没有完成,第二个查询可以被多次调用,所以我猜第一个以某种方式设置了一些状态......不管它是什么?

解决方法

解决方案:服务器故意做的……!