Я создаю почтовый запрос, используя пакет http. Мой код
final params = {
'cartItem': {
'sku': product.sku,
'qty': '1',
'quote_id': "xxxxx",
'price': product.price.toString()
}
};
final body = jsonEncode(params);
var uri = Uri.parse(ClientConfigs.loadBasicURL()+APIPath.guestCartsPath+quoteID+"/items");
uri = uri.replace(queryParameters: params);
final response = await http.post(uri, headers: {'Authorization': 'Bearer ' + ClientConfigs.accessToken}, body: body);
Он сломался за исключением того, что type '_InternalLinkedHashMap<String, String>' is not a subtype of type 'Iterable<dynamic>'
, и он указал на этот код внутри класса uri.dart:
queryParameters.forEach((key, value) {
if (value == null || value is String) {
writeParameter(key, value);
} else {
Iterable values = value; // Here is the broken point
for (String value in values) {
writeParameter(key, value);
}
}
});
Так что мой вопрос заключается в том, как сделатьотправить запрос с вложенным телом, как у меня. Спасибо за вашу помощь.
ОБНОВЛЕНИЕ: Спасибо @ChennaReddy Проблема в том, что я добавил uri = uri.replace(queryParameters: params);
, что недопустимо для queryParameters. И я заметил, что мне нужно изменить «» на «», например: «cartItem» вместо «cartItem», я не уверен насчет кодировки Dart, но меняю так, чтобы запрос работал.