连接超时和Google排球的奇怪问题

时间:2014-11-08 18:25:39

标签: android timeout android-volley

我有一个Android应用,它使用Google Volley向Web服务器后端(http://www.example.com/request.php)发出请求。当用户移动地图时,将调用请求网页的代码。

问题是有时请求失败。当它失败时,我打开我的Chrome浏览器(也在手机上),然后导航到那个" request.php"后端页面。请求因连接超时错误而失败。然后我按下Chrome中的刷新,并正确加载。我重新打开我的应用程序,然后一切正常,即:请求通过。

我做的调试步骤:

  1. 我从com.loopj Async库切换到Google Volley - >仍有超时错误

  2. 移动地图时请求其他页面(例如:stackoverflow.com而不是example.com/request.php) - >没有错误

  3. 将此行添加到服务器上的htaccess:RewriteRule (.*) - [E=Cache-Control:no-cache]因为我在x-litespeed-cache服务缓存页面之前遇到了问题 - >仍有超时错误

  4. 尝试使用多种设备和Android模拟器 - >仍有随机超时错误

  5. 向我的网站托管服务员提交了一张故障单,询问他们是否发现我的网页有任何超时错误 - > 他们说没有

  6. 这是我的代码:

    public void updateMarkers() {
        params = new HashMap<String, String>();
        params.put("mykey", "myvalue");
        StringRequest fpsr = new StringRequest(Method.POST, "http://www.example.com/request.php", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //do stuff with the response
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //do stuff with error
            }
        }) {
            @Override
            protected Map<String, String> getParams() {
                return params;
            }
        };
        ApplicationController.getInstance().addToRequestQueue(fpsr, "updateMarkers");
    }    
    

    ApplicationController.java与此处提供的内容相同:http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

    我非常怀疑代码存在问题,因为对我以外的页面的请求从来没有问题。

    奇怪的是,我的网站主持人说他们没有注意到任何超时错误。但即使访问Chrome for Android中的页面也会出现超时错误,只有在我按下刷新时才会消失。

    任何人都可以对此有所了解吗?非常感谢你!

    另外,我没有来自VolleyError的HTTP响应代码。原因是它随机失败,而且我并不总是将手机连接到计算机上以查看logcat。另外,我之前尝试记录error.networkResponse.statusCode;由于空指针异常,它崩溃了应用程序。

0 个答案:

没有答案