【问题标题】:Unable to get response from Private URL using fetch from BlackBerry-Dynamics-for-React-Native-Networking无法使用从 BlackBerry-Dynamics-for-React-Native-Networking 获取来自私有 URL 的响应
【发布时间】:2021-04-03 13:18:18
【问题描述】:

这是我的代码 sn-p

import { fetch } from 'BlackBerry-Dynamics-for-React-Native-Networking';

async componentDidMount() {
    try {

      let res = await fetch('http://my-private-url.com',
      {
         method : 'GET',
         headers : {}
      });
      
      let response = await res.text();
      // let response = await res.json(); // tried this method as well, getting same behaviour
      
    } catch (error) {
      console.log('errr-----', error);
    }
  }

我有时会收到以下错误,有时它可以正常工作(注意 - 在相同的 API 上,相同的响应):-

Error: The specified blob is invalid
    at Object.promiseMethodWrapper [as readAsText] (D:\PE-Code\rester\ds\node_modules\react-native\Libraries\BatchedBridge\NativeModules.js:103)
    at EventTarget.readAsText (D:\PE-Code\rester\ds\node_modules\BlackBerry-Dynamics-for-React-Native-Networking\js\FileReader.js:118)
    at readBlobAsText (D:\PE-Code\rester\ds\node_modules\BlackBerry-Dynamics-for-React-Native-Networking\js\fetch.js:206)
    at Response.Body.text (D:\PE-Code\rester\ds\node_modules\BlackBerry-Dynamics-for-React-Native-Networking\js\fetch.js:300)
    at RootDashboard.componentDidMount$ (D:\PE-Code\rester\ds\src\components\dashboards\RootDashboard.js:48)
    at tryCatch (D:\PE-Code\rester\ds\node_modules\regenerator-runtime\runtime.js:63)
    at Generator.invoke [as _invoke] (D:\PE-Code\rester\ds\node_modules\regenerator-runtime\runtime.js:293)
    at Generator.next (D:\PE-Code\rester\ds\node_modules\regenerator-runtime\runtime.js:118)
    at tryCatch (D:\PE-Code\rester\ds\node_modules\regenerator-runtime\runtime.js:63)
    at invoke (D:\PE-Code\rester\ds\node_modules\regenerator-runtime\runtime.js:154)

你能帮我指出我可能做错了什么吗? 我是否正确使用来自BlackBerry-Dynamics-for-React-Native-Networkingfetch

React Native 版本 - 0.63.4, BB 动态 SDK 版本 - 8.1

有时运行良好,有时却报错。

我在加载应用程序时发出 3-4 个 API 请求,有时第 3 个请求失败,有时第一个请求失败并且随机发生。

我在此行之前记录了 xhr - https://github.com/blackberry/BlackBerry-Dynamics-React-Native-SDK/blob/master/modules/BlackBerry-Dynamics-for-React-Native-Networking/js/fetch.js#L483

我的一些发现告诉我我是否得到了成功的回应 -

  1. 我们获得成功响应时的 blob 大小(大约 1200)明显大于我们在相同 API、相同响应上获得错误响应时(大约 50)。

  2. 当我得到一个成功的响应时,responseURL 是正确的,但是当我没有得到一个成功的响应时,responseURL 是 - “http://10.0.2.2:8081/symbolicate”。

  3. 此外,大多数情况下,我在通过 BB 授权屏幕后第一次加载我的应用时会收到错误消息。在我刷新我的应用程序后,它大部分时间都可以正常工作。

收到成功回复时的 XHR - Successful Response XHR

出现错误时的 XHR - Error

这些发现有什么帮助吗?

【问题讨论】:

    标签: react-native blackberry blackberry-dynamics


    【解决方案1】:

    您能否从另一个 BlackBerry Dynamics 应用程序访问私有 URL?在调用网络 API 之前,SDK 必须处于经过身份验证的状态。我建议测试您是否可以在我们的 BasicNetworkingSample 或 BlackBerry Access(如果可用)中访问该 URL。

    基本网络示例: https://github.com/blackberry/BlackBerry-Dynamics-React-Native-SDK/tree/master/SampleApplications/BasicNetworking

    【讨论】:

    • 如何知道我的 SDK 是否处于认证状态?另外,我不确定您是否错过或阅读了它,但有时它也有效。另一种情况是,在加载应用程序时,调用了 3-4 个不同的 API,有时它会卡在第 3 个,有时会卡在第 1 个,并且随机出现。
    • 感谢您的澄清。如果应用程序通过激活/授权屏幕,那么您将获得身份验证。您能否确认您使用的是什么版本的 React-Native 以及您使用的是什么版本的 BlackBerry Dynamics?另外,您的目标是 Android 还是 iOS?
    • 是的,我正在浏览授权屏幕。我将我的 React Native 应用程序从 0.62.2 升级到了 0.63.4。所以当前版本 - 0.63.4。黑莓动态 SDK 版本 - 8.1。目前针对安卓,IOS也需要这个。
    • 谢谢。该问题可能与取消分配 blob 资源有关。我们无法在 React-Native 中取消分配 blob 资源,因此您需要显式取消分配它。从 BasicNetworking 示例中查看此示例(相关代码 sn-p 是内联注释):github.com/blackberry/BlackBerry-Dynamics-React-Native-SDK/blob/…
    • 谢谢。我认为这不是问题,因为每当我获得成功响应时,我都不会收到此 blob 错误。我在此行之前记录了 xhr - github.com/blackberry/BlackBerry-Dynamics-React-Native-SDK/blob/…
    猜你喜欢
    • 1970-01-01
    • 2019-09-20
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多