【问题标题】:How to stop http response after failed responce响应失败后如何停止http响应
【发布时间】:2019-02-04 23:21:50
【问题描述】:

我正在使用 penguin PHP/MYSQL 服务器应用程序和 My ionic 1 android 应用程序。应用程序每 30 秒向服务器请求一次调用并返回一些数据,当服务器开启时它可以正常工作。当服务器关闭时发出请求并将响应作为错误,这也可以,但是当我在服务器上时,响应将批量返回。

例如 - 如果在服务器关闭到开启之间有 10 个调用(请求),那么在服务器开启后将有 10 个响应。

有什么方法可以停止之前的请求响应。

请帮助我,它在应用程序中产生了很多问题。

【问题讨论】:

  • 代码中是否存在将这些请求排队直到服务器启动的内容?因为当服务器关闭时,应该没有办法处理这些请求。
  • 什么都没有,只有每30秒请求调用一次
  • 当我在控制台日志中看到它在服务器关闭时给出错误,在打开后所有请求的调用响应将一次响应
  • 服务器关闭时,如果没有响应错误代码(即500),那么这些请求必须等待服务器响应,在这种情况下您可以给它等待的时间超时功能为回应。我认为它会完成这项工作。
  • 请举个例子

标签: android angularjs cordova ionic-framework httprequest


【解决方案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';,具体取决于您的框架版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2021-12-12
      • 2018-09-20
      • 2022-08-09
      相关资源
      最近更新 更多