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

Flutter中如何使用Dio发送raw格式数据的HTTP POST请求

解决Dio POST请求提交raw-data格式数据的方法

Dio默认提交Map类型的data参数时,会自动将内容序列化为x-www-form-urlencoded格式,要提交raw格式数据按以下方法修改即可:

方法1:单次请求指定raw格式(推荐)

  1. 先引入dart的转换库:
import 'dart:convert';
  1. 请求时将请求参数序列化为字符串,同时显式指定请求头的Content-Type:
Response response = await (await init()).post(
  url,
  // 将参数Map转为JSON字符串作为raw数据提交
  data: jsonEncode({
    "token": token,
    "code": formol
  }),
  // 指定Content-Type为application/json,和你提交的raw格式匹配
  options: Options(contentType: Headers.jsonContentType),
);

方法2:全局配置默认提交raw JSON格式

如果你的项目所有POST请求都需要用raw JSON格式提交,可以在初始化Dio实例时统一配置:

Dio initDio() {
  Dio dio = Dio();
  // 全局默认设置Content-Type为JSON
  dio.options.contentType = Headers.jsonContentType;
  // 其余初始化配置
  return dio;
}

配置完成后,请求时直接传序列化后的字符串即可,不需要每次单独指定Options。

其他raw格式适配

如果你需要提交的是纯文本、XML等其他raw格式,只需要对应修改contentType的取值,同时data参数传入对应格式的字符串即可:

  • 纯文本:contentType: "text/plain",data传普通字符串
  • XML:contentType: "application/xml",data传XML格式字符串

raw格式请求参考示例:
raw请求格式示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:45:07