访问本地主机api

时间:2019-07-18 17:08:19

标签: api react-native networking

我们正在尝试通过本地主机从react-native(版本0.59)连接到API(.net core 2.2),两者显然都在同一ip,不同的端口,react-native在端口8080上运行,并且api在44344上,问题发生在我们从react-native获取网址的那一刻

我们还测试了从Postman运行url的情况,即使从已安装INSIDE react-native iOS的浏览器进行了测试,也可以从安装的任何网络浏览器(safari / chrome)中正常进行。

任何在localhost外部运行的api都可以正常运行,是我们失败的localhost。

Network request failed.

onerror
    whatwg-fetch.js:504:29
dispatchEvent
    event-target.js:172:43
setReadyState
    XMLHttpRequest.js:580:29
__didCompleteResponse
    XMLHttpRequest.js:394:25
emit
    EventEmitter.js:190:12
__callFunction
    MessageQueue.js:366:47
<unknown>
    MessageQueue.js:106:26
__guard
    MessageQueue.js:314:10
callFunctionReturnFlushedQueue
    MessageQueue.js:105:17
callFunctionReturnFlushedQueue
    [native code]:0

获取api的部分代码(函数),非常简单(目前)

async Submit(){
  //GET METHOD
  try {
        let response = await fetch('https://192.168.1.56:44344/api/values');
        let responseJson = await response.json();
        return Alert.alert(JSON.stringify(responseJson));
  } catch (error) {
        console.error(error);
  }
}

好吧,首先,我们尝试了所有可能的解决方案,以将我的react native应用连接到我的.net核心api rest,它们都在localhost中运行,这是到目前为止,我们已经尝试过的事情到目前为止,仍然没有结果。

  • 本地主机
  • 127.0.0.1
  • 计算机ip(网络ip而非mac地址)
  • 反应本机空白项目(从头开始)
  • API .net核心空白项目(从头开始)
  • 运行零食博览会+ api .net核心
  • ip转发(我们不能对我们的工作政策做到这一点/不是我们正在寻找的解决方案)
  • http / https
  • 不同的端口
  • react-native的Android和ios权限
  • 同一网络不同的ip(这种排序有效,但是我们不知道为什么在同一ip(本地主机)中同时运行react-native和api不能正常工作
  • 10.0.2.2(对于android)
  • 在api .net核心上启用cors(但显然,这不适用于本机应用程序,仅适用于网络)
  • 通过ngrok / servo公开IP(我们不能对我们的工作政策做到这一点,而不是我们正在寻找的解决方案)
  • 飞盘
  • Axios
  • Websocket(我们不能对我们的工作政策做到这一点/不是我们正在寻找的解决方案)
  • XMLHttpRequest(状态代码错误0)
  • 防火墙/代理(我们的网络没有防火墙和代理)
  • Web浏览器插件(已停用和/或卸载)
  • 缓存/ cookies
  • Docker(我们不能对我们的工作政策做到这一点/不是我们正在寻找的解决方案)
  • 重新启动我的Macbook pro

我们希望React Native能够获取api,因此我们可以继续进行Office 365登录身份验证。

编辑:我刚刚发现获取机器ip(这次运行Windows),我的ip在api和react native上均为192.168.0.9,获取结果显示了标题中的10.0.2.2:80 json响应中的一个,我想是react native的“ localhost” ip,如果React native显然不允许我这样做,我应该如何从localhost获取ip。

2 个答案:

答案 0 :(得分:2)

从react-native获取localhost API时遇到了同样的问题。这是我为解决此问题所做的工作。 在启动类中,我从Configure方法中删除了 // app.UseHttpsRedirection(); 。(不确定是否需要)

之后,在properties文件夹下的launchsetting.js文件中,从

更改为

“ applicationUrl”:“ https://localhost:5001;http://localhost:5000

“ applicationUrl”:“ http://localhost:5000

在React本机部分中,我只是用IP更改了本地主机:

获取('http://localhost:5000/values/')以获取('http://127.0.0.1:5000/values/')

这完全适合我

答案 1 :(得分:0)

在命令提示符下输入ipconfig,这样我们将获得许多地址。从中取出IPV4并将其复制到剪贴板。然后将此地址粘贴到后端端口地址和前端端口地址。 例如,假设IPV4地址为192.168.1.3,则使您成为类似于http://192.168.1.3:8080/patients的后端路由API,其中8080​​是端口号(没关系)。并使用相同的前端获取API结果。