flutter 使用dio发送post请求 头为application/x-www-form-urlencoded json数据
时间: 2024-10-19 13:03:53 浏览: 41
在 Flutter 中,使用 Dio 库发送包含 `application/x-www-form-urlencoded` 格式的 JSON 数据的 POST 请求,你需要稍微调整一下之前的示例,因为这种格式的数据通常是表单字段形式。首先确保已导入 Dio:
```dart
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'dart:convert'; // 需要json库来进行字符串编码
```
然后创建并发送 POST 请求:
```dart
final dio = Dio();
Future<void> sendPostRequest() async {
// 将 JSON 数据转换为表单数据格式
final jsonData = {"key1": "value1", "key2": "value2"};
final formData = Map.fromEntries(jsonData.entries.map((entry) => [entry.key, entry.value]));
// 设置请求选项,指定 Content-Type 为 application/x-www-form-urlencoded
final options = Options(
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
);
try {
// 发送 POST 请求
final response = await dio.post(
'https://api.example.com/endpoint', // 替换为你实际的 URL
data: formData entries.map((pair) => "${pair.key}=${pair.value}").join('&'), // 表单数据拼接
options: options,
);
if (response.statusCode == 200) {
// 解析响应数据
Map<String, dynamic> responseMap = jsonDecode(response.data);
print(responseMap);
} else {
print('Error: ${response.statusCode}');
}
} on DioError catch (error) {
print('Error: $error');
}
}
```
现在你可以调用 `sendPostRequest()` 函数来发送这个请求。
阅读全文