Flutter Dio опубликовать объект с массивом - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь отправить запрос в API с объектом, как "

var params =  {
    "item": "itemx",
    "options": [1,2,3],
    };
    print(params);
    try {
      Response response = await _dio.post(getAddToCartURL,
          queryParameters: params,
          options: Options(headers: {
            HttpHeaders.contentTypeHeader: "application/json",
          }));

    } catch (error, stackTrace) {
      print("Exception occurred: $error  stackTrace: $stackTrace");
      return false;
    }

Dio отправляет объект как:

POST /api/add-to-cart/?item=itemx&options%5B%5D=1&options%5B%5D=2&options%5B%5D=3 

, в котором API распознает его как плохой request.

что не так, что я здесь делаю? Я даже пробовал список как ["1", "2", "3"], он такой же.

1 Ответ

1 голос
/ 01 мая 2020

Все зависит от того, как API ожидает этого. Я бы посоветовал попытаться закодировать его как JSON.

var params =  {
  "item": "itemx",
  "options": jsonEncode([1,2,3]),
};

Но отправка сложных данных в параметрах запроса не всегда так просто. Так как вы все равно используете POST, возможно, отправьте объект JSON в качестве тела вместо использования параметров запроса.

var params =  {
  "item": "itemx",
  "options": [1,2,3],
}; 
...
Response response = await _dio.post(getAddToCartURL,
  options: Options(headers: {
    HttpHeaders.contentTypeHeader: "application/json",
  }),
  data: jsonEncode(params),
);
...