flutter 发送post请求 头为application/x-www-form-urlencoded body为json
时间: 2024-10-19 12:14:41 浏览: 41
Flutter实现网络请求的方法示例
5星 · 资源好评率100%
在Flutter中发送POST请求,特别是当需要将JSON数据作为`application/x-www-form-urlencoded`编码的body时,你可以使用`http`包。首先,你需要添加`http`依赖到你的pubspec.yaml文件:
```yaml
dependencies:
http: ^0.13.3
```
然后,在dart代码中可以这样做:
```dart
import 'package:http/http.dart' as http;
Future动态sendPost(String url, dynamic jsonData) async {
// 将Json数据转换为QueryParameters格式
var encodedData = QueryParameters.fromMap(jsonData);
// 创建请求头
final headers = {'Content-Type': 'application/x-www-form-urlencoded'};
// 发送POST请求
final response = await http.post(
Uri.parse(url),
body: encodedData.toString(),
headers: headers,
);
if (response.statusCode == 200) {
// 请求成功,处理响应数据
final json = jsonDecode(response.body);
print(json);
} else {
throw Exception('Failed to send POST request');
}
}
// 调用示例
void main() async {
final jsonData = {
'key1': 'value1',
'key2': {'nestedKey': 'nestedValue'},
};
final url = 'https://example.com/api/endpoint';
try {
await sendPost(url, jsonData);
} on Exception catch (e) {
print(e.message);
}
}
```
在这个例子中,`jsonData`是一个包含键值对的map,我们将其转换成`QueryParameters`对象,并设置`Content-Type`为`application/x-www-form-urlencoded`。请注意,实际的APIURL你需要替换为你自己的服务地址。
阅读全文