我有一个Android应用,它使用Google Volley向Web服务器后端(http://www.example.com/request.php)发出请求。当用户移动地图时,将调用请求网页的代码。
问题是有时请求失败。当它失败时,我打开我的Chrome浏览器(也在手机上),然后导航到那个" request.php"后端页面。请求因连接超时错误而失败。然后我按下Chrome中的刷新,并正确加载。我重新打开我的应用程序,然后一切正常,即:请求通过。
我做的调试步骤:
我从com.loopj Async库切换到Google Volley - >仍有超时错误
移动地图时请求其他页面(例如:stackoverflow.com
而不是example.com/request.php
) - >没有错误
将此行添加到服务器上的htaccess:RewriteRule (.*) - [E=Cache-Control:no-cache]
因为我在x-litespeed-cache服务缓存页面之前遇到了问题 - >仍有超时错误
尝试使用多种设备和Android模拟器 - >仍有随机超时错误
向我的网站托管服务员提交了一张故障单,询问他们是否发现我的网页有任何超时错误 - > 他们说没有
这是我的代码:
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
;由于空指针异常,它崩溃了应用程序。