web-dev-qa-db-fra.com

Flutter dio poster un objet avec tableau

J'essaie de poster une demande à API avec un objet comme "

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 envoie l'objet comme suit:

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

dans lequel l'API le reconnaît comme une mauvaise demande.

quel est le problème que je fais ici? J'ai même essayé la liste comme ["1", "2", "3"], c'est la même chose.

3
Mujtaba Mahmood

Tout dépend de la manière dont l'API l'attend. Je suggérerais d'essayer de le coder comme Json.

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

Mais l'envoi de données complexes dans les paramètres de requête n'est pas toujours aussi facile. Puisque vous utilisez POST quand même, envoyez peut-être un objet JSON en tant que corps au lieu d'utiliser des paramètres de requête.

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