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

React Native iOS端POST请求报错:NSURLError -1000

React Native 0.73.7 iOS端POST请求NSURLError -1000解决办法

问题根源

NSURLErrorDomain -1000大概率是请求体格式不兼容iOS,你的代码里图片URI处理是核心问题:

  • iOS对FormData里的文件URI要求极严,非标准file://格式(比如content://或assets-library://)会直接导致请求体解析失败
  • React Native跨平台的URI格式差异没处理好,iOS端的本地文件路径必须是沙箱可访问的标准格式

修复步骤

1. 修正iOS图片URI格式

在把图片添加到FormData前,先处理URI:

import { Platform } from 'react-native';

// ... 你的原有代码
imageUri.forEach((uri, index) => {
  let fileUri = uri;
  if (Platform.OS === 'ios') {
    // 处理iOS特有的URI格式
    if (!uri.startsWith('file://')) {
      // 如果是assets-library开头的URI,转成file://格式
      fileUri = uri.replace('assets-library://', 'file://');
    }
    // 要是用的ImagePicker,直接拿它返回的output.uri就行,已经是正确格式
  }

  formData.append('file', {
    uri: fileUri,
    name: `photo_${index}.jpg`,
    type: 'image/jpeg',
  });
});

2. 别手动设置Content-Type

你的createOffer函数里,绝对不能手动加Content-Type: multipart/form-data!RN会自动生成带正确分隔边界的请求头,手动设置会搞砸解析:

// 以fetch封装为例,正确写法:
const createOffer = async (formData) => {
  return fetch('你的API地址', {
    method: 'POST',
    body: formData,
    headers: {
      // 删掉所有手动设置的multipart/form-data头!
    },
  });
};

3. 校验请求数据

确保data里的字段都是合法值,避免JSON序列化后出现无效内容:

const data = {
  price: price ?? 0,
  registrationPrice: registrationPrice ?? 0,
  brand: make ?? '',
  postType: 'SELL',
  modelYear: year ?? '',
  carType: bodyType ?? '',
  mileAge: mileage ?? 0,
  fuel: fuel ?? '',
};

4. 调试技巧

  • 在createOffer里打印请求配置,确认FormData的结构和URI是否正确
  • 用Charles抓包,看请求体有没有格式错误
  • 先只传model字段(不带图片),排查是不是图片部分引发的问题

内容的提问来源于stack exchange,提问作者emre varol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:22:34