2
votes

HttpException: connexion fermée avant la réception de l'en-tête complet

J'essaie de passer un appel comme le montre le code ci-dessous.

Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:60556/sK_cPlYMcGQ=/ws

Mais, j'ai cette erreur:

  Map<String, String> header = {"Content-Type": "application/json"};
  Map<String, String> body = {
    "client_id": "xxxx",
    "client_secret": "XXXX",
    "password": "password",
    "username": "username",
  };

  Future<Post> callForFirstToken() async {
    final response = await http.post(url, headers: header, body: body);
    return response.statusCode == 200
      ? Post.fromJson(json.decode(response.body))
      : throw Exception('Failed to load ...');}


0 commentaires

5 Réponses :


0
votes

Je ne suis pas entièrement sûr, mais j'ai déjà vu cela dans mon cas. Cette erreur n'a probablement rien à voir avec votre appel réseau réel que vous avez publié. L'adresse IP que vous pouvez voir 127.0.0.1 est celle de votre machine locale qui est utilisée pendant le débogage.

Cela signifie que le débogage n'est pas possible avec l'appareil. Vous voudrez peut-être redémarrer et reconnecter l'IDE et / ou le téléphone et désactiver n'importe quel programme VPN. Pour moi, cela a fonctionné.

Vous pouvez également définir le response.body sur un widget Texte pour vérifier si l'appel réseau a réussi.


1 commentaires

J'utilise un émulateur. Comme vous l'avez dit, j'ai redémarré et désactivé le VPN de ma machine Windows. Rien n'a fonctionné



0
votes

Je pense que j'ai eu le même problème, mais je ne sais pas comment je l'ai résolu. Je pense qu'il ajoutait ceci à l'en-tête: ..headers ["Content-Type"] = "application / json"


0 commentaires

2
votes

J'ai remplacé l'en-tête comme ci-dessous montre et fonctionne

{"HttpHeaders.contentTypeHeader": "application/json"}


1 commentaires

En fait, cela n'ajoutera pas de type de contenu à application / json. Au lieu de cela, un nouvel en-tête est créé avec la valeur HttpHeaders.contentTypeHeader qui est un en-tête inconnu et les données ne seront pas traitées comme JSON.



0
votes

Cela peut être un problème lors de la configuration du contexte Skia Gr . Essayez d'utiliser flutter run --enable-software-rendering au lieu de simplement run .


0 commentaires

0
votes

Le problème vous indique que la connexion s'est fermée car la réponse appropriée du serveur n'a pas été reçue. Cela signifie que quelque part dans le code de votre serveur, il est bloqué en raison d'une exception ou bloqué en raison d'un travail intensif, etc. Vous devez encapsuler le code de votre serveur dans try-catch et voir pourquoi votre code est bloqué. Je suppose que vous avez oublié de renvoyer les données au client après la demande de publication, et votre client attend toujours ces données.


0 commentaires