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

React Native中使用Axios发起带参数GET请求报错排查

问题描述

我需要发起一个GET请求,该请求在Postman中测试运行正常,但在React Native应用里使用Axios调用时失败。

请求示例URL:https://api.rank.io/v1/currencies?api_key=861bec030719d86620078f861a5dfe7aa&symbols=BTC,ETH

我的请求代码:

const params = {api_key:'861bec030719d86620078f861a5dfe7aa', symbols}
const { data } = await axios.get('https://api.rank.io/v1/currencies', {params})

遇到的错误信息:attempt to invoke interface method 'java.lang.string com.facebook.react.bridge...(错误信息不完整,核心为React Native桥接层字符串调用异常)


可能的解决方案

1. 确认symbols变量已正确赋值

未定义或格式错误的symbols会导致参数序列化异常,触发桥接层错误。确保变量已显式赋值:

const symbols = "BTC,ETH"; // 明确赋值为符合API要求的字符串
const params = {api_key:'861bec030719d86620078f861a5dfe7aa', symbols}
const { data } = await axios.get('https://api.rank.io/v1/currencies', {params})

2. 手动拼接URL参数(绕过Axios序列化问题)

React Native环境下Axios的参数序列化可能存在兼容性问题,尝试直接拼接完整URL:

const apiKey = '861bec030719d86620078f861a5dfe7aa';
const symbols = "BTC,ETH";
const url = `https://api.rank.io/v1/currencies?api_key=${apiKey}&symbols=${symbols}`;
const { data } = await axios.get(url);

3. 检查应用网络权限

  • Android:确保AndroidManifest.xml中添加网络权限
    <uses-permission android:name="android.permission.INTERNET" />
    
  • iOS:若API存在特殊域名限制,检查Info.plist中的ATS配置(HTTPS请求通常无需额外配置,但需确认无域名拦截规则)

4. 捕获完整错误信息

修改代码获取完整错误详情,帮助定位问题根源:

try {
  const params = {api_key:'861bec030719d86620078f861a5dfe7aa', symbols}
  const { data } = await axios.get('https://api.rank.io/v1/currencies', {params})
} catch (error) {
  console.error('请求错误详情:', error.response?.data || error.message || JSON.stringify(error));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:15:39