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

Flutter中dart http包POST请求未自动重定向获取目标页面内容问题

解决Flutter http包POST请求302重定向不自动跟进的问题

dart的http包默认不会自动处理POST请求返回的302重定向,而Python requests库默认会将POST转为GET请求跟进重定向,这是两者的行为差异。你可以通过以下两种方式解决:

方式一:手动处理重定向

检查响应状态码,获取重定向地址后发起新请求:

var initialResponse = await http.post(Uri.parse("LINK_TO_WEBSITE"), body: {"data": "data"});

if (initialResponse.statusCode == 302) {
  String? redirectPath = initialResponse.headers['location'];
  if (redirectPath != null) {
    // 拼接完整URL(处理相对路径)
    Uri originalUri = Uri.parse("LINK_TO_WEBSITE");
    Uri redirectUri = originalUri.resolve(redirectPath);
    // 根据目标网站要求选择GET/POST,requests默认用GET
    var finalResponse = await http.get(redirectUri);
    print(finalResponse.body);
  }
}

方式二:使用自定义Client配置重定向行为

通过http.Client可以更灵活控制重定向规则,确保自动跟进:

final client = http.Client();
try {
  final response = await client.post(
    Uri.parse("LINK_TO_WEBSITE"),
    body: {"data": "data"},
    followRedirects: true,
    maxRedirects: 5,
  );
  print(response.body);
} finally {
  client.close();
}

注:如果目标网站要求重定向时保持POST方法,你可能需要额外处理请求体的传递,部分网站会在重定向时保留原请求参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:02:13