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

如何在Flutter HTTP请求中添加Header?调用RapidAPI接口报错求助

问题原因

  • 你没有按照接口要求传递必填的请求头,接口要求的X-Rapidapi-Host、X-Rapidapi-Key两个头字段缺失,错误将密钥赋值给了Accept头字段,导致服务端无法识别你的请求身份,直接拒绝访问。
  • 如果你的代码运行在web端,需确保没有额外的跨域拦截规则,RapidAPI官方接口默认支持跨域调用,只要头配置正确即可正常请求。

修复后代码示例

import 'package:http/http.dart' as http;
import 'dart:io';

// 要在标注了async的函数内运行
Future<void> fetchCourses(String keyword) async {
  var client = http.Client();
  try {
    final response = await client.get(
      Uri.parse(
          'https://learning-objects-v2.p.rapidapi.com/search-provider?keywords=$keyword&lang=en&provider=Coursera&sort=popularity&model=strict&max=20&page=2'),
      headers: {
        // 按照接口要求添加两个必填头
        'X-Rapidapi-Host': 'learning-objects-v2.p.rapidapi.com',
        'X-Rapidapi-Key': '替换成你自己的RapidAPI真实密钥',
        HttpHeaders.acceptHeader: 'application/json', // 按需设置Accept头,不要填入密钥
      },
    );
    if (response.statusCode == 200) {
      // 请求成功,处理返回结果
      print(response.body);
    } else {
      // 打印错误信息方便排查
      print('请求失败,状态码:${response.statusCode},错误信息:${response.body}');
    }
  } catch (e) {
    print('请求发生异常:$e');
  } finally {
    client.close();
  }
}

额外注意事项

  • 请将代码里的替换成你自己的RapidAPI真实密钥替换为你在RapidAPI平台申请的实际可用Key,不要直接使用示例里的占位符。
  • 调用该函数的位置需要添加await关键字,且所在函数必须有async标注。
  • 记得在pubspec.yaml里添加http库的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:57:00