Flutter中如何使用Dio发送raw格式数据的HTTP POST请求
解决Dio POST请求提交raw-data格式数据的方法
Dio默认提交Map类型的data参数时,会自动将内容序列化为x-www-form-urlencoded格式,要提交raw格式数据按以下方法修改即可:
方法1:单次请求指定raw格式(推荐)
- 先引入dart的转换库:
import 'dart:convert';
- 请求时将请求参数序列化为字符串,同时显式指定请求头的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格式请求参考示例:
内容的提问来源于stack exchange,提问作者hadi
相关产品推荐
相关产品推荐


