http - 如何将查询参数添加到 Dart http 请求中?

如何正确地将查询参数添加到 Dart http get 请求中?尝试将 '?param1=one&param2=two' 附加到我的网址时,我无法让我的请求正确响应,但它在 Postman 中正常工作。这是我的代码的要点:

    final String url = "https://www.myurl.com/api/v1/test/";
    String workingStringInPostman = "https://www.myurl.com/api/v1/test/123/?param1=one&param2=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 参数。

欢迎提供代码示例。

最佳答案

您需要构造一个 Uri 并将其用于请求。类似的东西

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

https://stackoverflow.com/questions/52824388/

相关文章:

flutter - 如何在 flutter 小部件测试中捕获来自 future 的错误?

dart - Flutter - 容器中的顶部对齐文本

regex - 如何在 Dart 中使用正则表达式?

dart - 如何格式化定位文本 block 的背景颜色?

google-maps - 如果可以使用 flutter 打开谷歌地图应用程序

android - Flutter/Dart 静态变量丢失/不断重新初始化

android - 如何在 Flutter App 中处理 onPause/onResume?

flutter - 在 Flutter 中选择时更改 ListTile 的背景颜色

dart - Flutter 中的文本字段验证

listview - Flutter:SimpleDialog 中的 ListView