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

React Native中Fetch带Headers请求报TypeError: Network request failed

解决方案

1. 修正请求头字段类型

React Native 的 Fetch API 要求请求头所有值必须为字符串类型,你当前的 x-rpc-client_type 是数字 5,这很可能是触发报错的原因。将其改为字符串:

let header = {
    Cookie: 'account_id_v2=xxxx; account_mid_v2=0xpvondsl7_mhy; cookie_token_v2=xxxxxxxx; ltmid_v2=xxxxx; ltoken_v2=xxxxxxxxxxx-xxxxxxxxx-xxx; ltuid_v2=xxxx; aliyungf_tc=xxxxxxxxxxx',
    DS: '1674207860,753043,e07214c71a00375565a2cc6714e9a27b',
    Referer: 'https://webstatic.mihoyo.com',
    'User-Agent':
        'Mozilla/5.0 (Linux; Android 12; 61249) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.73 Mobile Safari/537.36 miHoYoBBS/2.37.1',
    'x-rpc-app_version': '2.37.1',
    'x-rpc-client_type': '5', // 改为字符串类型
}

同时,请求体建议用 JSON.stringify 生成,避免手动转义引号的潜在问题:

body: JSON.stringify({role_id: "208574599", server: "cn_gf01"}),

2. 使用 Headers 对象构建请求头

直接传递普通对象作为请求头可能存在兼容性问题,改用原生 Headers 对象构建:

const headers = new Headers();
headers.append('Cookie', 'account_id_v2=xxxx; account_mid_v2=0xpvondsl7_mhy; cookie_token_v2=xxxxxxxx; ltmid_v2=xxxxx; ltoken_v2=xxxxxxxxxxx-xxxxxxxxx-xxx; ltuid_v2=xxxx; aliyungf_tc=xxxxxxxxxxx');
headers.append('DS', '1674207860,753043,e07214c71a00375565a2cc6714e9a27b');
headers.append('Referer', 'https://webstatic.mihoyo.com');
headers.append('User-Agent', 'Mozilla/5.0 (Linux; Android 12; 61249) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.73 Mobile Safari/537.36 miHoYoBBS/2.37.1');
headers.append('x-rpc-app_version', '2.37.1');
headers.append('x-rpc-client_type', '5');

// 发起请求时传入 headers
fetch('https://api-takumi.mihoyo.com/game_record/app/genshin/api/index', { 
    method: 'POST', 
    body: JSON.stringify({role_id: "208574599", server: "cn_gf01"}), 
    headers 
})

3. 逐字段排查请求头

如果上述方法无效,尝试逐个添加请求头字段测试,定位具体触发报错的字段。比如先只保留 User-Agent 测试请求是否正常,再逐步添加其他字段,排查是否是某一个字段(如 DS 格式、Cookie 特殊内容)导致的问题。

4. 替换为 Axios 发起请求

React Native 的 Fetch 对部分请求头的处理存在兼容性问题,改用 Axios 可规避这类问题:
先安装 Axios:

npm install axios

然后修改请求代码:

import axios from 'axios';

const headers = {
    Cookie: 'account_id_v2=xxxx; account_mid_v2=0xpvondsl7_mhy; cookie_token_v2=xxxxxxxx; ltmid_v2=xxxxx; ltoken_v2=xxxxxxxxxxx-xxxxxxxxx-xxx; ltuid_v2=xxxx; aliyungf_tc=xxxxxxxxxxx',
    DS: '1674207860,753043,e07214c71a00375565a2cc6714e9a27b',
    Referer: 'https://webstatic.mihoyo.com',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 12; 61249) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.73 Mobile Safari/537.36 miHoYoBBS/2.37.1',
    'x-rpc-app_version': '2.37.1',
    'x-rpc-client_type': '5',
};

axios.post(
    'https://api-takumi.mihoyo.com/game_record/app/genshin/api/index',
    { role_id: "208574599", server: "cn_gf01" },
    { headers }
)
.then(response => {
    console.log(response.data);
    CallBack(response.data);
})
.catch(error => {
    console.log(error);
});

5. 检查 Android 网络配置

如果是 Android 平台:

  • 确保 AndroidManifest.xml 中添加了网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 若目标 API 级别 >= 28,确认 AndroidManifest.xml 的 application 标签中没有限制 HTTPS 请求的配置(你的请求是 HTTPS,一般无需额外配置,但可检查 networkSecurityConfig)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:15:55