我正在尝试使用axios从API获取数据。
这是我发出请求的代码:
export const loadBloodGroups = () => {
return (dispatch) => {
dispatch({ type: LOADING_BLOOD });
const url = `http://www.example.org/api/bloodgroup/getusersbloodgroup`;
axios.get(url)
.then(response => loadingSuccess(dispatch, response))
.catch(error => loadingFail(dispatch, error));
};
};
const loadingFail = (dispatch, error) => {
console.log(error);
dispatch({
type: LOADING_BLOOD_FAIL,
payload: error
});
};
const loadingSuccess = (dispatch, response) => {
dispatch({
type: LOADING_BLOOD_SUCCESS,
payload: response
});
};
http的info.plist设置:
它在android模拟器中可以正常工作,但IOS模拟器无法正常工作。
在我的浏览器调试控制台中,它显示:
和Mac终端显示:
有人可以告诉我,我在哪里弄错了吗?还是我需要为IOS做任何其他配置?
我的平台:
答案 0 :(得分:0)
使用:
更新您的Info.plist<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
答案 1 :(得分:0)
在尝试更改ATS密钥时,您删除了一个用于本机响应的密钥
您total = 0
counts = {}
for root, dirs, files in os.walk(path):
if not dirs:
print(f'{root}: {len(files)}')
counts[root] = len(files)
total += len(files)
的plist值
NSAppTransportSecurity
答案 2 :(得分:0)
只需编辑info.plist:删除“ NSExceptionMinimumTLSVersion”,然后添加具有“ false”值的“ NSExceptionRequiresForwardSecrecy”。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>specificDomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
答案 3 :(得分:0)
在寻找React native IOS Network Error的解决方法时,找到了解决方法: 在处理 iOS 和 android 的本地主机路径时创建问题 如果您使用 localhost for android,请将其作为您的路径:'http://10.0.2.2:3000' 如果您在 iOS 上使用 localhost,请将此作为您的路径:http://localhost:3000
代码如下:
import {Platform} from 'react-native'
import axios from 'axios';
var baseURL = null;
Platform.OS === 'android'? baseURL = 'http://10.0.2.2:3000' : baseURL= 'http://localhost:3000'
export const getNotifications = () =>
axios.get(`${baseURL}/notifications`, {
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
});