我正在尝试将对象的请求发布为
var params = {
"item": "itemx",
"options": [1,2,3],
};
print(params);
try {
Response response = await _dio.post(getAddToCartURL,
queryParameters: params,
options: Options(headers: {
HttpHeaders.contentTypeHeader: "application/json",
}));
} catch (error, stackTrace) {
print("Exception occurred: $error stackTrace: $stackTrace");
return false;
}
Dio将对象发送为:
POST /api/add-to-cart/?item=itemx&options%5B%5D=1&options%5B%5D=2&options%5B%5D=3
api将其识别为错误请求。
我在这里做什么错?我甚至尝试过将列表命名为[“ 1”,“ 2”,“ 3”],它是相同的。
答案 0 :(得分:9)
这完全取决于API的期望。我建议尝试将其编码为JSON。
var params = {
"item": "itemx",
"options": jsonEncode([1,2,3]),
};
但是在查询参数中发送复杂数据并不总是那么容易。由于无论如何您都在使用POST,因此可以将JSON对象作为正文发送,而不使用查询参数。
var params = {
"item": "itemx",
"options": [1,2,3],
};
...
Response response = await _dio.post(getAddToCartURL,
options: Options(headers: {
HttpHeaders.contentTypeHeader: "application/json",
}),
data: jsonEncode(params),
);