首页 > 解决方案 > Ionic 5 - API 请求在浏览器上工作,而不是在模拟的 IOS 上

问题描述

我有这个 Ionic 5/Capacitor 应用程序,我正在对本地服务器进行 API 调用,该服务器在 localhost:3000 的 docker 上运行。当我从浏览器测试时,请求很好。邮递员也要求很好。在我的 XCode 记录模拟器中,我看到了这个

[error] - ERROR {"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":"http://localhost:3000/pins","ok":false,"name":"HttpErrorResponse","message":"Http failure response for http://localhost:3000/pins: 0 Unknown Error","error":{"isTrusted":true}}

真正有趣的部分是,我正在运行 Fiddler 来监控发出的请求。Fiddler 也得到了 200,我什至可以看到响应数据。因此,Fiddler 看到了正确的网络调用,但随后我的 Ionic 应用程序收到了该错误。这让我觉得这是一个 Ionic/Emulator/IOS 问题,但我对 Ionic 没有足够的了解,无法立即知道它是什么。

这是负责发出请求的代码:

  ngOnInit() {
    const request = this.http.get('http://localhost:3000/pins');

    this.refresh$.subscribe(
      (lastPos: { latitude?: any; longitude?: number }) => {
        request.subscribe(data => {
          if (data) {
            this.addMarkersToMap(data, lastPos);
          }
        });
      }
    );
  }

并且构造函数中导入的 HTTPClient 来自 Angular:

import { HttpClient } from '@angular/common/http';

标签: iosangularionic-frameworkcapacitorionic5

解决方案


我最终不得不使用这个包,检查我是否在移动设备上。

https://ionicframework.com/docs/native/http/


推荐阅读