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

如何使用Flutter实现级联链式HTTP请求

Flutter 顺序链式请求实现方案

前置准备

  • 首先在pubspec.yaml中添加http网络请求依赖:
dependencies:
  flutter:
    sdk: flutter
  http: ^1.1.0 # 可替换为最新稳定版本

核心实现逻辑

Dart 内置的async/await语法天然支持异步任务顺序执行,只需在第一个请求前添加await关键字,等待请求完成拿到第一个token后,再执行第二个请求即可,完整示例代码如下:

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

// 封装的请求方法,直接调用即可拿到最终的第二个token
Future<String?> getSecondToken() async {
  // 配置第一个请求参数
  final String firstApiUrl = "你的第一个POST请求接口地址";
  final String username = "你的用户名";
  final String password = "你的密码";
  // text/plain格式的请求体,按你司接口要求拼接即可,示例为键值对格式
  final String firstRequestBody = "username=$username&password=$password";

  try {
    // 执行第一个POST请求,await会等待请求完成再往下执行
    final firstResponse = await http.post(
      Uri.parse(firstApiUrl),
      headers: {
        "Content-Type": "text/plain; charset=utf-8",
      },
      body: firstRequestBody,
    );

    // 校验第一个请求是否成功
    if (firstResponse.statusCode != 200) {
      print("第一个请求失败,状态码:${firstResponse.statusCode}");
      return null;
    }

    // 解析拿到第一个token,按你司实际返回格式调整,示例假设接口直接返回token字符串
    final String firstToken = firstResponse.body.trim();
    print("获取到第一个token:$firstToken");

    // 拼接第二个请求的URL,把firstToken拼到指定位置
    final String secondApiUrl = "你的第二个请求接口地址?token=$firstToken"; // 按你司实际URL规则调整拼接逻辑

    // 执行第二个请求
    final secondResponse = await http.get(Uri.parse(secondApiUrl));

    // 校验第二个请求是否成功
    if (secondResponse.statusCode != 200) {
      print("第二个请求失败,状态码:${secondResponse.statusCode}");
      return null;
    }

    // 解析拿到第二个token,同样按你司实际返回格式调整
    final String secondToken = secondResponse.body.trim();
    print("获取到第二个token:$secondToken");
    return secondToken;

  } catch (e) {
    print("请求执行出错:$e");
    return null;
  }
}

调用示例

  • 你可以在需要触发请求的位置直接调用这个异步方法即可:
// 调用示例
void fetchToken() async {
  final secondToken = await getSecondToken();
  if (secondToken != null) {
    // 后续业务逻辑
  }
}

注意事项

  • 请求体的拼接规则、token的解析逻辑请和你司后端接口规则保持一致,上述示例为通用场景的写法。
  • 如果第二个请求也需要自定义header或者其他参数,直接在http.get/http.post的参数中添加即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:06:03