dart - 使用标准库将字符串转换为 Dart 中的 GET 请求参数

标签 dart flutter dart-http

我有一个多字字符串,我想将其转换为 GET 请求参数。

我有一个 API 端点 /search 接受参数 query。现在,您的请求通常看起来像 http://host/search?query=Hello+World

我有一个 String Hello World 我想将其转换为这个 URL 编码参数。

当然,我可以编写将其分解为单词并在其间添加 + 的逻辑,但我想知道 URI class could help with this

我正在使用 Dart 的 httpClient 发出请求。

Future<String> _getJsonData(String queryToSearch) async {
  List data = new List();
  var httpClient = new HttpClient();

  var request = await httpClient.getUrl(Uri.parse(
      config['API_ENDPOINT'] + '/search?query=' +
          queryToSearch));

  var response = await request.close();
  if (response.statusCode == HttpStatus.OK) {
    var jsonString = await response.transform(utf8.decoder).join();
    data = json.decode(jsonString);
    print(data[0]);
    return data[0].toString();
  } else {
    return "{}";
  }
}

本质上,需要将 queryToSearch 编码为 URL 参数。

最佳答案

您可以使用 Uri.http(s) 将所有内容(查询、主机和路径)包装在一起并相应地对其进行编码。

    final uri = new Uri.http(config['API_ENDPOINT'], '/search', {"query": queryToSearch});

关于dart - 使用标准库将字符串转换为 Dart 中的 GET 请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49899164/

相关文章:

json - 在本地 IP 地址上使用来自 dart/flutter 的 http.get 时获取 statuscode = 400

dart - 为什么异步方法需要返回 future ?

flutter - 无法在intellijIDEA中的.dart文件中打开toUpperCase()或toLowerCase()的实现或声明

dart - Dart Services API:如何通过API服务访问/fix?

ios - CupertinoTextField 中的 Flutter 文本验证

dart - 如何使用 http 库捕获 SocketException?

dart - 如何使用自定义起始位置将 `TabBar` 向左对齐

android - Flutter - InkWell 对 Flexible 内部的 onTap 没有反应

dart - 调用对象字段作为 ListTile 属性

python - 如何编写在Flask服务器上进行Ajax调用的Dart HttpRequest?