我有一个使用 volley 框架从 PHP
服务器端脚本获取数据的原生 android 应用。
它在大多数时间都运行良好,但我有 20% 的失败率。
错误说:
com.android.volley.NoConnection, java.io.InterruptedIOException.
调试发现statuscode = 0
,显然是错误的。
不知道是什么原因?由于它大部分时间都在工作,所以应该没有明显的错误代码。
仅供引用,服务器端的那些 PHP 脚本非常适合我的 IOS 应用。
请允许我在这里发布我的代码:
retryConnBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtOut.append("\n");
txtOut.append("Button with Retry Click");
Log.d("Click", "Button Click");
final String url = "https://www.myserver.com/api/getBalanceInfoTest?token=7ff3317a4f3dc07d0c297a7d16d2049c&t=" + System.currentTimeMillis();
//final String url = "http://192.168.1.23/base/test/";
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
txtOut.append("\n");
txtOut.append("Result with Retry:");
txtOut.append(response.toString());
Log.d("Response", response.toString());
VolleyLog.e("Response:", response.toString());
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
txtOut.append("\n");
txtOut.append("Error with Retry:");
txtOut.append(error.toString());
Log.d("Error.Response", error.toString());
VolleyLog.e("Error:", error.getMessage());
}
});
getRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(getRequest);
queue.start();
}
});
}
关于更多信息,我的 PHP
脚本的输出是:
{"hsaBalance":"1000.00"}
,由 PHP
的 Json_encode()
函数创建。
最佳答案
我已经修复了这个错误。 这不是网络问题。
queue.add(getRequest);
queue.start();
应该是
queue.add(getRequest);
所以关键是我们应该删除 queue.start()
。
关于java - 随机 com.android.volley.NoConnection 错误,java.io.InterruptedIOException,statuscode=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31158858/