我在 Flutter 应用中使用 dio。我有请求。我需要添加 int 数组来请求参数。 这是一个例子:
api/my?param1=6¶m2=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
如何正确地将此参数添加到请求中?有什么建议吗?
答案 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 编码的数据并不常见,它在请求/响应正文中更为常见