Flutter发送POST请求后如何获取HTTP响应头内的返回信息
解决方案
你当前使用的是Dart的http库,响应头是存放在Response实例的headers属性中,属于Map<String, String>类型,你需要先确认服务端返回的自定义详情消息对应的响应头键名,再从headers中取值即可。
正确示例代码
import 'package:http/http.dart' as http; // 发送POST请求 var response = await http.post( Uri.parse('你的接口地址'), body: {/* 你的请求参数 */} ); // 先校验响应状态避免空值 if (response.statusCode == 200) { // 获取响应头集合,http库默认会把所有响应头键名转为全小写 Map<String, String> headers = response.headers; // 假设服务端存详情的响应头键名为x-detail-message,替换为你实际的键名即可 var detailMessage = headers['x-detail-message'] ?? '无返回详情'; }
常见注意事项
- 如果你开发的是Web端应用,跨域场景下自定义响应头需要服务端在
Access-Control-Expose-Headers配置中添加对应的自定义头键名,否则浏览器会默认拦截禁止前端读取该响应头 - 不要直接对Response对象使用下标取值,Response没有重载下标运算符,你之前的写法运行时会直接报错
- 取值建议加判空处理,避免响应头缺失时出现空异常
内容的提问来源于stack exchange,提问作者ccd
相关产品推荐
相关产品推荐

