Shr*_*hna 12 java android retrofit
这是我的网络请求示例
networkAPI.postData(myData).enqueue(new Callback<MyResponse>() {
@Override
public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
if (response.code() == 201) {
// success
}
}
@Override
public void onFailure(Call<MyResponse> call, Throwable t) {
}
});
Run Code Online (Sandbox Code Playgroud)
这是我应该只拨打一次的请求,因为我有一次可用的优惠券代码.如果我立即关闭我的网络连接或者在调用此方法后立即断开连接,那么它会移动到onFailure带有IOExceptionthrowable的方法,这通常是指连接错误,但重点是发布到服务器的数据和使用的凭证代码,问题是onFailure方法在这里被称为.
我确信它不是解析失败,因此我也尝试使用它Void.为什么onResponse即使在发布数据后也没有调用.如何克服这种情况?
我不知道你的后端是什么,但是在C#WebApi中,在服务器端,你可以检查客户端是否仍然通过连接,Response.IsClientConnected但是这个标志仅用于优雅的tcp断开连接我相信.如果客户突然关闭他的互联网,它将无法工作.这只是由于http(和底层tcp)的性质
此外,我认为值得一提的是,请求总是有可能到达服务器但响应没有到达客户端.在没有成功响应客户端的情况下,根本无法保证服务器不会处理凭证.客户端可以发送请求,一旦您准备好返回状态代码200,客户端就可以断开连接.在Web服务设计中应始终考虑这一点.
最好的办法是让客户以某种方式查看过去兑现的优惠券.或者在新鲜的页面上,您可以自动检查是否有过去的凭证兑换尝试(通过其他Web服务方法)并适当地显示响应.
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |