我正在使用包http创建一个post请求。
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);
}
}
});
如何做一个像我的嵌套体后请求?
1条答案
按热度按时间baubqpgj1#
发生此错误是由于以下行:
这样做的目的是将uri参数替换为新参数,下面是一个示例:
输出结果为:
这些是
GET
请求的参数。在您的例子中,您混淆了
uri.replace()
和GET
参数,并在那里传递POST
参数。因此,看起来您不需要调用uri.replace()
方法,这将解决此错误。