android - Android 上的 React Native Fetch 不会传递选项

标签 android react-native fetch

当 Android 在 iOS 上运行良好时,我似乎无法让 Android 传递任何选项。它似乎转到端点并删除方法、 header 和正文。我不确定,因为当我添加下面提到的一些代码进行调试时,它起作用了。

let data = JSON.stringify({
    appKeyLookup: CONSTANTS.APP_KEY_LOOKUP,
    username: username,
    password: password,
});
try {
    let response = await fetch(CONSTANTS.API_URL + 'login/', {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
            'Cache-Control': 'no-cache',
        },
        body: data,
    });
    let responseJSON = await response.json();

真正奇怪的是,如果我添加

const _XHR = GLOBAL.originalXMLHttpRequest ?  GLOBAL.originalXMLHttpRequest : GLOBAL.XMLHttpRequest            
XMLHttpRequest = _XHR

到入口点然后安装chrome扩展Allow-Control-Allow-Origin:*

它工作正常。所以它似乎与 CORS 有关,但我不确定。

我正在使用 React Native 0.56.0

最佳答案

所以我终于想通了。 Android 将“charset=utf-8”附加到 Content-Type。使其成为“Content-Type:”application/json;字符集=utf-8'。这导致我正在使用的 API 出现问题。当我认为它正在剥离 body 时,我完全错了。

我从 React-Native appends "charset=utf-8" to HTTP call Content-Type 中发现了这个这导致我进行了两种不同的修复。

Java Fix

或者

JavaScript Fix

关于android - Android 上的 React Native Fetch 不会传递选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370804/

相关文章:

android - onCreate 在 getWritableDatabase/getReadableDatabase 之后没有被调用

android - 无需单击 EditText 即可显示键盘

android - 我如何从自定义位置开始查看寻呼机并可以从该位置来回滑动?

react-native - TextInput 只允许数字 react 原生

javascript - MVC JavaScript 获取 API 数据并发送到 Controller

java - Realm 中的线程 - 干净的代码架构

javascript - 检查 Jest 和 enzyme 中的按钮文本

javascript - 我如何仅通过查看数字来确定国家代码

javascript - 无法加载 wasm 应用程序

php - 如果从MySql获取的数据小于*number*,则显示这个,否则显示其他内容?