react-native - 从 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工作。见我的另一篇文章。这里的某个地方:)
解决方案
我想到了。该设备(模拟器)无法访问,localhost
所以我不得不将我的 url 设置为http://127.0.0.1:3000/stations
,它就像一个梦一样工作。
推荐阅读
- javascript - 如何在单击按钮时删除 vuetify 卡
- c++ - 添加 g++ 的 -std= 标志时,C++ 打印到终端要慢得多?
- performance - 如何在 Azure 中高效执行大数据集转换?
- angular6 - 如何在 Angular Material 6 中使用 Angular Reactive 表单设置默认单选按钮并根据选择显示部分
- python - 除了每个列表的第一个值之外的嵌套列表行的总和
- rust - 实例化(未使用?)Rust 类型时的递归限制
- reactjs - 有没有办法避免将命名空间放在 t 函数上?
- vue.js - 如何更改 pingTimeout socket.io nodejs
- python-3.x - 自从通过 pip 更新 PyQt5 后不再能够启动 Spyder
- r - 如何在 r simmer 中定义排队模型的起始状态?