首页 > 解决方案 > 从 React Native ios 访问 Dyson 服务器

问题描述

我正在使用 Dyson 为我的 React Native 应用程序托管一个小模拟服务器,并尝试从服务器获取。服务器似乎运行良好,当我http://localhost:3000/stations在浏览器中访问我想要的 url 时,我得到了一个不错的 JSON 响应。

不过,在我的 React Native 操作中,我得到Network request failed

export function fetchStations() {
  return dispatch => {
    dispatch({ type: "GET_STATIONS_START" });
    fetch("http://localhost:3000/stations")
      .then(res => {
        return res.json();
      })
      .then(json => {
        dispatch({ type: "GET_STATIONS_SUCCESS", payload: json.stations });
      })
      .catch(error => {
        console.warn(error);
        dispatch({ type: "GET_STATIONS_FAILURE", payload: error });
      });
  };
}

使用静态本地 URL 是可行的,并且使用例如 Google Maps API 是可行的(尽管这不是我想要的,它只是一个示例 API 来尝试)。

我想我可能调用了错误的 url,但它在浏览器中有效,所以这似乎值得怀疑。我的猜测是这与 iOS 不喜欢 http 请求(只接受 https)有关,除非你在某处设置了一些设置(我在原生 iOS 开发中经历过这个)。

如果这是问题所在,我该如何从 React Native 修复它?或者,真正的问题是什么?

PS。我使用的是dyson而不是json-server,因为由于某种原因我无法让json-server工作。见我的另一篇文章。这里的某个地方:)

标签: react-nativexmlhttprequest

解决方案


我想到了。该设备(模拟器)无法访问,localhost所以我不得不将我的 url 设置为http://127.0.0.1:3000/stations,它就像一个梦一样工作。


推荐阅读