Android凌空两次发送数据

Sha*_*van 40 android android-volley

我在我的应用程序中使用Volley Network Library.

问题是当网络连接缓慢时它会多次发送数据.

在我谷歌这个问题之后,我能找到关于这个问题的所有内容都在下面:

connection.setChunkedStreamingMode(0);
Run Code Online (Sandbox Code Playgroud)

但是我无法编辑我的排球库Hurlkstack课程.

它说:

此类文件的jar属于容器android私有库,它不允许修改其条目上的源附件.

我应该怎么做才能帮助我

我有以下代码我应该修改.

private void makeJsonObjectRequest() {
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
            "http://example.com/***.php", obj, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        response.getString("success");
                        } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            });

    AppController.getInstance().addToRequestQueue(jsonObjReq);
}
Run Code Online (Sandbox Code Playgroud)

ρяσ*_*я K 82

无需使用connection.setChunkedStreamingMode(0);以避免凌空发送数据两次 bug.您需要为当前请求设置重试策略:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(...);
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(
                       0,
                       DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                       DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)

  • @ShashikalaChavan:在`AppController.getInstance()之前调用`setRetryPolicy`.addToRequestQueue(jsonObjReq);`line (3认同)
  • 为避免发送两次,请将maxNumRetries设置为0。(DEFAULT_MAX_RETRIES = 1,它将重试一次并发送两次消息)。 (3认同)

小智 7

在齐射解析中完成新的Response.ErrorListener()方法后使用下面的代码.希望它对你有用.我遇到了同样的问题并用相同的代码解决了它.

码:

jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(
                30000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)