Dio(用于颤振)-如何将数组 int 发送到 queryParameters?

时间:2021-05-30 18:47:13

标签: flutter http dart request dio

我在 Flutter 应用中使用 dio。我有请求。我需要添加 int 数组来请求参数。 这是一个例子:

api/my?param1=6&param2=5&exclude_id=[7364, 7365, 7366]

这是我在 dart 中的代码:

 List<int> ids = [7364, 7365, 7366]
 String jsonIds = jsonEncode(ids); 
 final params = <String, dynamic>{
    'param1': 6,
    'param2': 5,
    "exclude_id": jsonIds
  };
 final response = await _dio.get('/api/my', queryParameters: params);

但它作为(来自文本日志)来到服务器:

   api/my?param1=25\u0026param2=6\u0026exclude_id=%5B7172%2C8%2C7150%2C7156%2C3848%2C7212%2C7168%2C15%2C24%2C4102%2C1032%5D

如何正确地将此参数添加到请求中?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您知道服务器能够处理形式为 int"1234,2345,3456",您可以在将它们传递给 dio 之前简单地加入它们:

 List<int> ids = [7364, 7365, 7366]
 final params = <String, dynamic>{
    'param1': 6,
    'param2': 5,
    "exclude_id": ids.join(','),  // "7364,7365,7366"
  };
 final response = await _dio.get('/api/my', queryParameters: params);

请注意,正确答案取决于您的服务器期望的格式。如果是第三部分服务器,请尝试查看他们的文档。

此外,HTTP URL 不能包含(除其他外)空格,但 jsonEncode 的输出可能包含空格。通常在 URL 参数中看到 JSON 编码的数据并不常见,它在请求/响应正文中更为常见