Flutter Dio post 一个带数组的对象
Flutter Dio post an object with array
我正在尝试 post 向 api 发送一个对象为“
的请求
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”],它是一样的。
这完全取决于 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),
);
我正在尝试 post 向 api 发送一个对象为“
的请求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”],它是一样的。
这完全取决于 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),
);