我试图从Omie API获取一些数据,但我只收到错误500。你能找出我的代码中的错误吗?
Future<bool> get() async {
final uri = Uri.parse('https://app.omie.com.br/api/v1/produtos/pedido/');
Map<String, dynamic> data = {
"call": "ConsultarPedido",
"app_key": "3********1",
"app_secret": "3*******b",
"param": [
{"codigo_pedido": "9159824162"}
]
};
http.Response response = await http.post(
uri,
headers: {"Content-type": "application/json"},
body: json.encode(data),
);
print('statusCode: ${response.statusCode}');
if (response.statusCode == 200) {
return true;
}
return false;
}
使用Postman工作正常。有什么想法吗?
1条答案
按热度按时间hm2xizp91#
问题是您的服务器不喜欢Dart发送的
content-type
。当你传入一个字符串作为主体时,http
在后台将其编码为字节,并将content-type
自动从application/json
更改为application/json; charset=utf8
(因为它使用utf8编码字符串)。您的服务器在编码后缀上呕吐。解决方法是自己进行编码,并将原始字节传递给
http
(这样它就不会添加编码后缀)。变更:
到