错误500当我尝试使用http Flutter从Omie加载API数据时

ig9co6j1  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(134)

我试图从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工作正常。有什么想法吗?

hm2xizp9

hm2xizp91#

问题是您的服务器不喜欢Dart发送的content-type。当你传入一个字符串作为主体时,http在后台将其编码为字节,并将content-type自动从application/json更改为application/json; charset=utf8(因为它使用utf8编码字符串)。您的服务器在编码后缀上呕吐。
解决方法是自己进行编码,并将原始字节传递给http(这样它就不会添加编码后缀)。
变更:

body: json.encode(data),

body: utf8.encode(json.encode(data)),

相关问题