You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Expo iOS端Axios POST请求无法获取返回数据排查

iOS端Axios POST请求无法接收返回数据的问题排查与解决

核心问题点

你的Axios请求头配置存在错误,这是导致iOS端异常的关键:

  • 强制设置了Accept: multipart/form-data和Content-Type: multipart/form-data,但服务器返回的响应格式大概率不是multipart/form-data,iOS网络栈对请求头与响应格式的匹配校验更严格,直接导致Axios无法解析响应体。
  • GET请求无需设置Content-Type,且服务器返回格式(如JSON)与默认Accept兼容;Android网络层对这种不匹配的容忍度更高,所以两者均正常。

针对性解决方案

情况1:发送普通JSON/表单数据

修改请求头为对应格式,或直接移除手动配置的头(Axios会自动适配):

export const axiosInstance = axios.create({
    baseURL: APP_API_ENDPOINT,
    timeout: 5000, // 建议延长超时时间,1秒过短易触发iOS网络超时
    headers: {
        "Accept": 'application/json',
        "Content-Type": "application/json",
        // 保留其他自定义头
        ...
    },
});

情况2:确实需要上传文件(multipart/form-data)

不要手动设置Content-Type,让Axios自动生成带boundary的请求头,否则会丢失关键的boundary参数导致解析失败:

export const axiosInstance = axios.create({
    baseURL: APP_API_ENDPOINT,
    timeout: 5000,
    headers: {
        "Accept": 'application/json', // 根据服务器返回格式调整
        // 移除手动的Content-Type: multipart/form-data
        ...
    },
});

// 发送请求时使用FormData,Axios会自动处理Content-Type
const formData = new FormData();
formData.append('file', yourFile);
axiosInstance.post('/upload', formData);

额外排查点

  • 检查服务器返回的响应头Content-Type是否与请求的Accept匹配,iOS端对这种匹配度要求远高于Android。
  • 确认timeout设置是否合理,1秒的超时时间在iOS网络环境下容易触发未完成响应就超时的情况,建议调整为3-5秒。

内容的提问来源于stack exchange,提问作者Paulos Ab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:20:56