【问题标题】:Cannot connect mobile app into browser REST api无法将移动应用程序连接到浏览器 REST api
【发布时间】:2017-10-18 12:39:43
【问题描述】:

我的移动设备上安装了一个可用的 react-native 应用。另外,我的机器上运行着一个 REST 服务器。

目标

我希望应用程序应该与 REST api 服务器通信。我正在尝试使用 REST 方法从站点获取数据。

问题/动机

我能够使用路由器的 IP 地址作为应用程序和 api 的连接。 以下是手机浏览器和我的机器/笔记本浏览器都可以访问的网址。

api浏览器调试器-ui运行在 http://192.168.254.106:8081/debugger-ui

REST 服务器运行在 http://192.168.254.106/open_social

到目前为止我做过的事情: 我使用 jsonapi(waterwheel) 代码修改了应用程序以从站点获取或更新数据。

  const Waterwheel = require('waterwheel');
  const waterwheel = new Waterwheel({
    base: 'http://192.168.254.106/open_social',
    timeout: 10000,
    oauth: {
      grant_type: 'password',
      client_id: '2249cb82-98d8-49ea-a32b-a7cff7912a7e',
      client_secret: 'admin',
      username: 'admin',
      password: 'n8hBtuFY8R',
      scope: 'administrator'
    }
  })  

  waterwheel.jsonapi.get('node/test', {}, "1cc692b8-c37c-4ee7-942f-b2e6b8276f35")
    .then(res => {
      console.log(res)
      console.log('Success..!')
    })
    .catch(err => {
      console.log(err)
  })

Waterwheel 是在我的应用运行npm install waterwheel时添加到node_modules 文件夹中的一个模块

我的 api 中也启用了 CORS:

  cors.config:
    enabled: true
    allowedHeaders: ['Content-Type', 'Access-Cntrol-Allow-Headers', 'Authorization']
    allowedMethods: ['POST', 'GET', 'OPTIONS', 'PATCH', 'DELETE']
    allowedOrigins: ['*']
    exposedHeaders: true
    maxAge: false
    supportsCredentials: true

清单权限也已启用

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

预期结果:当此代码添加到应用程序中时,我应该能够从 REST api 服务器获得响应。

我认为我需要解决的应用程序和 api 之间没有连接,需要帮助。

TIA

【问题讨论】:

  • 似乎无法理解您的问题。任何错误输出?
  • 嗨@Raymund,我更新了我的问题,希望你能明白我的意思。谢谢!
  • 愚蠢的问题.. 但是您是否测试过 API 链接在您的浏览器上是否有效?
  • 是的,它有效且有效。

标签: android rest react-native drupal-8


【解决方案1】:

您是否在 IOS 设备上进行测试?检查this!

PS:我没有足够的声誉发表评论

默认情况下,iOS 会阻止任何未使用 SSL 加密的请求。 如果您需要从明文 URL(以 http 开头)获取 您首先需要添加一个应用传输安全例外。如果你 提前知道您需要访问哪些域,更重要的是 安全地为这些域添加例外;如果域是 直到运行时才知道您可以完全禁用 ATS。但是请注意 从 2017 年 1 月起,Apple 的 App Store 审核将要求 禁用 ATS 的合理理由。请参阅 Apple 的文档 了解更多信息。

【讨论】:

  • 它在标签中。我正在安卓设备上测试它。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多