我使用两个获取函数,一个用于登录,另一个从我的 API 获取数据。
登录工作正常,但第二次获取在 ios 中抛出错误。在安卓上运行良好
授权标头未从 ios 发送
这是我的代码:
import { Alert } from 'react-native';
import { rootUrl } from './index';
import { translate } from '../../config/translation';
import store from './../store';
import NavigatorService from '../../config/navigator';
export default function fetchTree(Authorization) {
fetch(`${rootUrl}/tree`, {
method: 'GET',
headers: {
Authorization,
'Content-Type': 'application/json',
},
})
.then((response) => {
console.log(response);
store.dispatch({ type: 'loading', payload: false });
if (response.status !== 200) {
Alert.alert(
translate('Access Denied'),
translate('You are not Authorized to view this content'),
[{ text: translate('OK') }],
{
cancelable: false,
},
);
return 0;
}
return response.json();
})
.then((responseJson) => {
if (responseJson !== 0) {
const tree = responseJson[0].tree;
NavigatorService.reset('Home', { tree });
}
});
}
这是我从服务器得到的响应:
解决方案:
URL 需要尾随 /
所以应该是
${rootUrl}/tree/
而不是${rootUrl}/tree
iOS 保留了您无法使用的 HTTP 标头,授权就是其中之一。
https://developer.apple.com/documentation/foundation/nsurlrequest
请参阅此 stackoverflow 评论: React Native iOS 不添加授权标头,适用于 Android
URL 需要尾随 /
所以,它应该是 ${rootUrl}/tree/ 而不是 ${rootUrl}/tree
基于 React Native
文档 fetch 适用于 IOS 和 Android 所以我不认为获取时出现错误我认为还有另一个错误 您是否在 info.plist
中添加了网络权限