【问题标题】:Android Volley: Why does the second request of these two requests fail with a timeout?Android Volley:为什么这两个请求中的第二个请求超时失败?
【发布时间】:2021-06-04 00:03:04
【问题描述】:

这听起来sooo微不足道,我使用 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",
                                 null,
                                 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,……我真的需要重启应用了!

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

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

【问题讨论】:

    标签: android timeout android-volley


    【解决方案1】:

    解决办法:这是服务器故意做的……!

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2014-03-31
      • 2014-08-22
      相关资源
      最近更新 更多