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

Flutter调用OpenSubtitles API发送POST请求返回空响应体问题

Flutter调用OpenSubtitles API获取下载链接返回空响应的排查方案

我通过Flutter的http库调用OpenSubtitles的下载API,目标是通过file_id获取下载链接。Postman中能正常拿到JSON格式的响应,但Flutter代码执行后却得到空响应。

我的代码如下:

// body parameter 
Map<String, dynamic> body = {'file_id': 123};
String jsonBody = json.encode(body);

// response request
var download_response = await http.post(
    Uri.parse('https://api.opensubtitles.com/api/v1/download'),
    headers: {
        'Content-Type': 'application/json',
        'Api-Key': 'yCTZwGASncUthpMkMkbQDjcUdrrM2r8v'
    },
    body: jsonBody,
);

// print
debugPrint(download_response.body.toString());

我已经尝试过这些方法,但问题依然存在:

  • 使用json.encode编码请求体
  • 检查代码语法格式正确性
  • 直接使用JSON字符串作为请求体内容

排查方向和解决方法

  1. 先确认请求状态码
    先打印响应的状态码,判断请求是否真的发送成功:
debugPrint('请求状态码: ${download_response.statusCode}');

如果状态码不是200,比如401(未授权)、403(权限不足),可能是API密钥无效或缺少其他认证信息;如果是400,说明请求参数格式或内容有问题。

  1. 处理响应编码问题
    空响应可能是默认编码解析失败导致的,尝试手动用UTF-8解码响应字节:
String responseContent = utf8.decode(download_response.bodyBytes);
debugPrint('响应内容: $responseContent');
  1. 捕获请求异常
    给请求添加异常捕获,排查是否存在网络或请求过程中的报错:
try {
  var download_response = await http.post(
    Uri.parse('https://api.opensubtitles.com/api/v1/download'),
    headers: {
      'Content-Type': 'application/json',
      'Api-Key': 'yCTZwGASncUthpMkMkbQDjcUdrrM2r8v'
    },
    body: jsonBody,
  );
  debugPrint('状态码: ${download_response.statusCode}');
  debugPrint('响应内容: ${utf8.decode(download_response.bodyBytes)}');
} catch (e) {
  debugPrint('请求异常信息: $e');
}
  1. 对比Postman与Flutter的请求差异
    用抓包工具(如Charles、Fiddler)分别抓取Postman和Flutter发送的请求,对比两者的请求头、请求体、Cookie等信息。Postman可能自动携带了某些Flutter代码中缺失的头信息(比如用户认证Token),这会导致接口返回异常。

  2. 核对API文档的要求
    再次查看OpenSubtitles的下载接口文档,确认是否需要额外的请求头参数(比如部分接口除了Api-Key还需要Authorization头),或者file_id是否有格式、权限限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:45:24