【发布时间】:2019-10-17 09:06:54
【问题描述】:
我正在使用包 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 的编码,但这样更改会使请求生效。
【问题讨论】:
-
您能否补充一下,您尝试使用这些查询参数调用/实现的最终 URL 是什么?
-
那你为什么需要
uri = uri.replace(queryParameters: params);?无论如何,您是按照自己的意愿将它们发送到身体中吗? -
你是对的@ChennaReddy。非常感谢。
标签: http post flutter nested uri