【问题标题】:React Native Fetch not working with laravel API LocallyReact Native Fetch 不能在本地使用 laravel API
【发布时间】:2019-10-06 10:35:33
【问题描述】:

我正在尝试在 react-native 中本地获取 laravel API。当我尝试使用远程 url 时它可以工作,但它不适用于本地服务器。我正在使用 android studio 模拟器和

react-native => 0.59.8, 
laravel => 5.7

我的代码

 async submit() {

    //https://facebook.github.io/react-native/movies.json => this works

    try {
        let response = await fetch('localhost:8000/api/coins');
        let responseJsonData = await response.json();
        console.log(responseJsonData, 'data');
    } catch (e) {
        console.log(e, 'error')
    }
};

错误

05-20 14:46:08.167  4749  8885 I ReactNativeJS: { [TypeError: Network request failed]
05-20 14:46:08.167  4749  8885 I ReactNativeJS:   line: 24115,
05-20 14:46:08.167  4749  8885 I ReactNativeJS:   column: 31,
05-20 14:46:08.167  4749  8885 I ReactNativeJS:   sourceURL: 'http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false' }, 'error'

【问题讨论】:

  • 那么你是在 Android 上运行 Laravel 吗?如果没有,请使用您计算机的 IP 地址。 Android 将拥有自己的 IP,并且 localhost 不会与您的 PC 相关。
  • 你可以试试这个let response = await fetch('http://localhost:8000/api/coins');
  • 嗨@Objectobject。我已经用那个试过了。
  • 为什么你刚刚删除了我为你正确回答的问题?
  • 你好@尼克。那是个错误的问题。我正在创建一个新的。我对此感到非常抱歉。

标签: javascript php react-native fetch laravel-5.7


【解决方案1】:

这可能是个问题

iOS 在模拟器中运行,Android 在模拟器中运行。

在您的localhost:8000/api/coins localhost 中指向代码运行的环境。

模拟器模拟真实设备,而模拟器只是模拟设备。 所以 Android 上的 localhost 指向模拟的 Android 设备。而不是运行服务器的机器。

解决方案
解决方案是将localhost 替换为您机器的IP 地址。 (例如:192.168.1.22)

【讨论】:

    【解决方案2】:

    对于 iOS,您必须设置域例外:

    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <false/>
      <key>NSExceptionDomains</key>
      <dict>
        <key>cocoacasts.com</key>
        <dict>
          <key>NSIncludesSubdomains</key>
          <true/>
          <key>NSExceptionAllowsInsecureHTTPLoads</key>
          <true/>
        </dict>
      </dict>
    </dict>
    

    或允许所有域:

    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
          <true/>
    </dict>
    

    【讨论】:

    • 嗨@Vikram,我遇到了android问题。
    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 2016-08-30
    • 2022-12-02
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多