如何用凌空解决“我的请求被执行了两次”?
How to fix ‘My request is executed twice’ with volley?
我正在开发具有客户端/服务器类型架构的 Android 移动应用程序。总之,应用程序连接到服务器以贷记或借记用户帐户。
我使用 Android Volley 与服务器建立连接。第一个问题说明如下:
** 由于某些原因,当我运行一个移动客户端请求扣款账户时,请求被发送了两次,导致账户被扣款两次。
想了想,这大概是排球接口RetryPolicy的问题。我将暂定数设置为 0,这会导致下一个问题。
** 当我发起请求时,过了一会儿,手机客户端收到一个错误(服务器没有响应)但是服务器上已经完成了操作(账户已经被扣款)
如何解决问题?同一个请求无论连接状态如何,用户的余额都必须被借记或记入一次。
您可以在Volley
中设置setRetryPolicy
。 DEFAULT_MAX_RETRIES 表示请求将在出现问题时重试 1 次,因此在这种情况下总共将执行 2 次。
所以在setRetryPolicy
中将DEFAULT_MAX_RETRIES
改为0
req.setRetryPolicy(new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS,
0, //Change DEFAULT_MAX_RETRIES to 0 for no retry
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
0表示不重试
我正在开发具有客户端/服务器类型架构的 Android 移动应用程序。总之,应用程序连接到服务器以贷记或借记用户帐户。 我使用 Android Volley 与服务器建立连接。第一个问题说明如下:
** 由于某些原因,当我运行一个移动客户端请求扣款账户时,请求被发送了两次,导致账户被扣款两次。
想了想,这大概是排球接口RetryPolicy的问题。我将暂定数设置为 0,这会导致下一个问题。
** 当我发起请求时,过了一会儿,手机客户端收到一个错误(服务器没有响应)但是服务器上已经完成了操作(账户已经被扣款)
如何解决问题?同一个请求无论连接状态如何,用户的余额都必须被借记或记入一次。
您可以在Volley
中设置setRetryPolicy
。 DEFAULT_MAX_RETRIES 表示请求将在出现问题时重试 1 次,因此在这种情况下总共将执行 2 次。
所以在setRetryPolicy
DEFAULT_MAX_RETRIES
改为0
req.setRetryPolicy(new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS,
0, //Change DEFAULT_MAX_RETRIES to 0 for no retry
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
0表示不重试