4 votes

Gérer les requêtes non-Ok dans dart

J'ai ce simple snippet dart :

import 'package:http/http.dart' as http;

Client _http = new BrowserClient();

final response = await _http
      .post(url, headers: someHeader, body: someValue);

Le serveur pour la requête en cours, renvoie Bad Request 400 réponse. Je veux être capable d'obtenir le code d'état pour certaines raisons. Mais dès que le _http.post est appelé, j'obtiens cette erreur :

POST http://localhost/path 400 (Bad Request)

Mise en place du bloc try/catch ne sert à rien, puisque l'exception détectée est ClientException qui ne contient aucune information sur le code d'état et le corps de la réponse (ce qui est important ici). Comment puis-je gérer les codes d'état ici, sans lancer d'exceptions ?

UPDATE :

J'ai ce bout de phrase après _http.post() appeler :

if (response.statusCode == 400) {
  //  manage bad request
}

Mais le response es null donc le statusCode n'est pas accessible ici.

UPDATE 2 : Je reçois la demande sur le serveur et je peux la tracer sur le serveur. Comme je l'ai mentionné, le serveur envoie un 400 Bad Request et fonctionne très bien. Mais obtenir la réponse en Dart provoque l'erreur.

0voto

Kleak Points 165

Le site Response a un champ statusCode où vous pouvez obtenir le code d'état de la réponse. Vous pouvez faire quelque chose comme ça :

final response = await _http
  .post(url, headers: someHeader, body: someValue);
if (response.statusCode == 400) {
  //  manage bad request
}

0voto

David Morgan Points 276

Je soupçonne que l'url, un en-tête ou le corps est invalide d'une manière ou d'une autre. (par exemple, des caractères non valides dans un en-tête). La requête n'est pas réellement envoyée au serveur, et donc ClientException est jeté au lieu de vous donner une réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X