Angular 4 - 使用http请求检测连接问题

时间:2018-05-14 13:56:57

标签: node.js angular xmlhttprequest

我正面临一个我不知道如何解决的问题。 我正在 Angular 4 中开发一个小型网络应用程序。在该应用程序中,我向我在公司网络中托管的 Node.js - Express 中开发的api发出http请求。

我的问题是,大多数时候那些调用api的工作都非常好。在我的开发环境,家里以及我们的一些客户网络中,我没有遇到任何问题。但在某些网络中,http请求不会执行。

我知道因为我在api中注册了每个呼叫,在那些情况下我甚至都没有检测到呼叫。在Chrome中,我甚至收到404错误。 此外,我在客户的计算机上安装了 Postman ,但仍然没有回复。 我认为这是一个与api调用有关的网络策略,但我不知道我在寻找什么(代理?)。

你可以给我一些提示吗? 是否有可能在我的代码中检测到这些问题,并在这种情况下向客户显示消息?

如果需要,我可以粘贴代码的某些部分。

谢谢!

编辑:我找到了导致我问题的原因。我的api使用了一个不常见的端口(3088),这个端口有时被客户网络策略阻止。我切换到443端口,现在运行得很好。

1 个答案:

答案 0 :(得分:1)

因此,假设您正在使用angulars HTTP服务,您有两个选项,因为您可以看到此处的请求返回一个observable,然后您可以订阅它并处理错误。

getConfig(): Observable<HttpResponse<any>> {
    return this.http.get(this.configUrl);
}

showConfig() {
  this.configService.getConfig()
  .subscribe(
    (data: Config) => this.config = { ...data }, // success path
    error => this.error = error // error path
  );
}

您也可以像这样重试请求

getConfig() {
  return this.http.get<Config>(this.configUrl)
   .pipe(
     retry(3), // retry a failed request up to 3 times
     catchError(this.handleError) // then handle the error
  );
}

然后,您可以弹出一个Toast消息,告诉用户该错误是否发生,这里是来自Angular的文档的源材料:https://angular.io/guide/http

希望这有帮助。