响应失败后如何停止http响应
Posted
技术标签:
【中文标题】响应失败后如何停止http响应【英文标题】:How to stop http response after failed responce 【发布时间】:2019-02-04 23:21:50 【问题描述】:我正在使用 penguin php/mysql 服务器应用程序和 My ionic 1 android 应用程序。应用程序每 30 秒向服务器请求一次调用并返回一些数据,当服务器开启时它可以正常工作。当服务器关闭时发出请求并将响应作为错误,这也可以,但是当我在服务器上时,响应将批量返回。
例如 - 如果在服务器关闭到开启之间有 10 个调用(请求),那么在服务器开启后将有 10 个响应。
有什么方法可以停止之前的请求响应。
请帮助我,它在应用程序中产生了很多问题。
【问题讨论】:
代码中是否存在将这些请求排队直到服务器启动的内容?因为当服务器关闭时,应该没有办法处理这些请求。 什么都没有,只有每30秒请求调用一次 当我在控制台日志中看到它在服务器关闭时给出错误,在打开后所有请求的调用响应将一次响应 服务器关闭时,如果没有响应错误代码(即500),那么这些请求必须等待服务器响应,在这种情况下您可以给它等待的时间超时功能为回应。我认为它会完成这项工作。 请举个例子 【参考方案1】:您需要在特定时间间隔后使请求超时。
下面是一个例子:
$http(
method : "GET",
url : "https://www.example.com/post",
timeout: 1*35 * 1000 //35 secs just for safety, as it takes 30 secs for next request
)
.then(
function mySuccess(response)
$scope.myWelcome = response.data;
,
function myError(response)
$scope.myWelcome = response.statusText;
);
如果您的服务器宕机,请求将在超过给定时间间隔后超时,并相应显示响应错误。
【讨论】:
【参考方案2】:如果您想要离子框架中的解决方案:
this.http.post('http://my.api', your JSON data)
.timeout(10000)
.subscribe((Return_data) => Do success Stuff, (err) => Do Fail Stuff)
如果没有收到任何内容,您的请求将在 10 秒后停止。
您可能需要import 'rxjs/add/operator/retry';
,具体取决于您的框架版本。
【讨论】:
以上是关于响应失败后如何停止http响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在 azure 函数 http 触发器中触发失败,并带有自定义错误响应
socket.io 在 x 秒/第一次尝试获取响应失败后停止重新发出事件
http url 的 Http 失败响应:401 Unauthorized