http - 如何将查询参数添加到 Dart http 请求中?
问题描述
如何正确地将查询参数添加到 Dart http get 请求中?尝试将 '?param1=one¶m2=two' 附加到我的网址时,我无法让我的请求正确响应,但它在 Postman 中正常工作。这是我的代码的要点:
final String url = "https://www.myurl.com/api/v1/test/";
String workingStringInPostman = "https://www.myurl.com/api/v1/test/123/?param1=one¶m2=two";
Map<String, String> qParams = {
'param1': 'one',
'param2': 'two',
};
var res = await http
.get(Uri.encodeFull("$url${widget.pk}/"),
headers: {HttpHeaders.authorizationHeader: "Token $token",
HttpHeaders.contentTypeHeader: "application/json"},
);
${widget.pk} 只是一个被传递的整数值(参见 workingStringInPostman 变量中的值 123。
qParams 是为了方便,以防需要 Uri 参数。
欢迎提供代码示例。
解决方案
您将要构造 aUri
并将其用于请求。就像是
final queryParameters = {
'param1': 'one',
'param2': 'two',
};
final uri =
Uri.https('www.myurl.com', '/api/v1/test/${widget.pk}', queryParameters);
final response = await http.get(uri, headers: {
HttpHeaders.authorizationHeader: 'Token $token',
HttpHeaders.contentTypeHeader: 'application/json',
});
见https://api.dartlang.org/stable/2.0.0/dart-core/Uri/Uri.https.html
推荐阅读
- python - Travis CI Python 无法导入“请求”
- 3d - 为什么我在运行 3d max 时一次又一次收到丢失的 MSVCR100?
- c# - 需要帮助打开带有预填充字段的默认电子邮件客户端 ASP.NET
- javascript - JS:实时搜索不适用于两个查询之间的空格
- excel - 自动激活宏,无需单击目标单元格
- python - 为什么可以添加 pd.Timedelta 和 None?
- angular - 在另一个组件中修改一个组件的模板的 CSS
- sql - 有条件地加/减数量
- join - 将 KStream 加入 KTable 时,Kafka KTables 缺少数据
- mysql - 有什么方法可以在不手动进行的情况下加密我的数据?