web-dev-qa-db-fra.com

Bad State: impossible de définir les champs du corps d'une demande avec "application / json" de type contenu

Map<String,String> headers = {'Content-Type':'application/json','authorization':'Basic c3R1ZHlkb3RlOnN0dWR5ZG90ZTEyMw=='};

var response = await post(Urls.getToken,
        headers: headers,
        body: {"grant_type":"password","username":"******","password":"*****","scope":"offline_access"},
      );

Quand j'exécute cela, je ne suis pas en mesure de recevoir des données et que l'erreur a été lancée est

Bad State: impossible de définir les champs du corps d'une demande avec "application/json" de type contenu

20
Fayaz

Fondamentalement, ce que Fayaz a dit plus tôt.

import 'package:http/http.Dart' as http;
import 'Dart:convert';

Map<String,String> headers = {'Content-Type':'application/json','authorization':'Basic c3R1ZHlkb3RlOnN0dWR5ZG90ZTEyMw=='};
final msg = jsonEncode({"grant_type":"password","username":"******","password":"*****","scope":"offline_access"});

var response = await post(Urls.getToken,
               headers: headers,
               body: msg,
            );
6
Monza

eu un problème similaire avec la bibliothèque http ... modifié pour Dio 2.1.0 et le problème des en-têtes est parti.

jSONENCENEDE (corps) n'a pas fait l'affaire, car les documents disent:

Envoie un http POST Demande avec les en-têtes et le corps données à l'URL donnée, qui peut être un [URI] ou une [chaîne].

[corps] définit le corps de la demande. Il peut s'agir d'une [chaîne], d'une [liste] ou d'un [carte]. Si c'est une chaîne, elle est codée à l'aide de [encoding] et utilisé comme corde à la demande. Le type de contenu de la demande sera par défaut à "Texte/Plain".

Si [Corps] est une liste, il est utilisé comme liste d'octets pour le corps de la demande.

Si [Corps] est une carte, elle est codée comme champs de formulaire à l'aide de [encodage]. Le type de contenu de la demande sera défini sur "application/x-www-form-urlencoded"; Cela ne peut pas être remplacé. [codage] par défaut sur [UTF8].

Pour un contrôle plus fin à la demande sur la demande, utilisez [Envoyer] à la place.

Future<Response> post(url, {Map<String, String> headers, body, Encoding encoding});
1
Matt
Map<String,String> header = {'Content-Type':'application/json-patch+json','accept':'application/json'};
    final msg = jsonEncode({"username":"$emailorPhoneN","password":"$passwrod"});

    try {
      var response = await http.post(UrlConstants.loginUrl, headers: header, body: msg,
      ).timeout(Duration(seconds: httpDuration));
      var convert = json.decode(response.body);
      print('**********Data from server $convert');

      if (convert == null) {
        return null;
      } else {
        String token = convert['token'];

        if (token != null) {
          SignUpModel signUpModel = SignUpModel.fromJson(convert);
          return signUpModel;
        } else {
          //*** GET Error message from the API provider.....
          SignUpModel signUpModel = SignUpModel.fromJson(convert);
          return signUpModel;
        }
      }
0
Harbdollar