连接超时和Google Volley的奇怪问题

Mic*_*ael 5 android timeout android-volley

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

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

我做了调试的步骤:

  1. 我从com.loopj异步库切换到Google Volley->仍然存在超时错误

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

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

  4. 在多种设备和Android模拟器上进行过尝试->仍然随机存在超时错误

  5. 向我的虚拟主机提交了票证,询问他们是否注意到我页面上的任何超时错误-> 他们说不

这是我的代码:

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");
}    
Run Code Online (Sandbox Code Playgroud)

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

我高度怀疑代码是否有问题,因为对除我自己以外的页面的请求永远都不会有问题。

奇怪的是,我的网络托管商说他们没有注意到任何超时错误。但是,即使在Android版Chrome浏览器中访问该页面,也存在超时错误,该错误仅在我按下刷新后才会消失。

谁能阐明这一点?非常感谢你!

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