Необработанное исключение: Исключение: {ошибка: ошибка проверки сущности, причины: [неверный тип ввода для 'бренда']} - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь передать тело Json внутрь тела Json, используя флаттер. Функция выглядит следующим образом:

  Future<String> postItem(Item item, Brand brand) async {
    var jsonob = jsonEncode(<String, dynamic>{
      'item_code': item.itemCode,
      'item_name': item.itemName,
      'part_no': item.partNo,
      'min_stock': int.parse(item.minStock),
      'brand': jsonEncode(brand)
    });
    print(jsonob); //for debugging
    final http.Response response = await http.post(
      BASE_URL + "item",
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonob
    );

Брендировать следующую функцию для кодирования в json:

  Map<String, dynamic> toJson() => {
    "id": int.parse(this.brandId),
    "brand_name": this.brandName,
    "brand_code": this.brandCode,
    "brand_image": this.brandImage
  };

сообщение об ошибке: E/flutter ( 1601): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Exception: {error: entity validation failed, reasons: [invalid input type for 'brand']}

вывод на печать для jsonob:

{"item_code":"item-001","item_name":"item123","part_no":"part123","min_stock":1,"brand":"{\"id\":1,\"brand_name\":\"BRANDA\",\"brand_code\":\"BRANDA\",\"brand_image\":\"null\"}"}

Здесь я пользуюсь рекомендациями: https://flutter.dev/docs/cookbook/networking/send-data

http-сервер создан с использованием Aqueduct. Я попытался запустить тот же http.post с помощью POSTMAN, и не было выдано никакой ошибки, поэтому я не уверен, что вызывает эту ошибку во флаттере.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 марта 2020

Я думаю, что тело запроса должно быть закодировано в Json строку с использованием JsonEncode (Object), поэтому должно быть так:

final http.Response response = await http.post(
      BASE_URL + "item",
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(jsonob),
    );
...