如何使用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
相关产品推荐
相关产品推荐

