如何在Dart中发送带表单参数的GET请求 将现有POST代码改为GET实现
Dart 携带表单参数的GET请求实现方案
HTTP 标准规范中GET请求不支持通过请求体(body)传递参数,所有参数需要以查询参数的形式拼接在URL中,Dart http 库的
http.get()方法遵循这一规范,因此没有提供body入参。
实现方式
你可以在通过Uri.parse()解析基础URL后,调用replace方法传入queryParameters自动完成参数拼接与编码,适配你只能使用Uri.parse解析目标URL的要求,无需手动处理字符串拼接。
修改后完整代码
import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'dart:convert' as convert; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { getTest() async { final baseUri = 'http://10.0.2.2:5000/qna/'; // 解析基础URL后自动拼接查询参数,自动处理特殊字符编码 final requestUri = Uri.parse(baseUri).replace( queryParameters: { 'pregunta': 'contacto', }, ); http.Response response = await http.get(requestUri); print(response.body); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Flutter WebView '), ), body: Container( child: TextButton(onPressed: getTest, child: Text('Push me')), ), ), ); } }
注意事项
- 服务端需要调整参数读取逻辑,从URL查询参数中读取对应字段,不再从请求体解析
- 多参数直接在
queryParameters中追加键值对即可,Uri会自动处理中文、特殊符号的URL编码,避免乱码问题 - 最终生成的请求URL格式为
http://10.0.2.2:5000/qna/?pregunta=contacto,符合GET请求的通用标准
内容的提问来源于stack exchange,提问作者jlemosmusi
相关产品推荐
相关产品推荐

