web-dev-qa-db-fra.com

En-têtes http Flutter

Erreur de lancement de la demande de publication lors de la définition de la mappe d'en-tête.

Voici mon code

Future<GenericResponse> makePostCall(
  GenericRequest genericRequest) {String URL = "$BASE_URL/api/";

Map data = {
  "name": "name",
  "email": "email",
  "mobile": "mobile",
  "transportationRequired": false,
  "userId": 5,
};

Map userHeader = {"Content-type": "application/json", "Accept": "application/json"};


return _netUtil.post(URL, body: data, headers:userHeader).then((dynamic res) {
  print(res);
  if (res["code"] != 200) throw new Exception(res["message"][0]);
  return GenericResponse.fromJson(res);
});

}

mais je reçois cette exception avec des en-têtes.

`══╡ EXCEPTION CAUGHT BY GESTURE ╞═ flutter: L'assertion suivante a été émise lors de la manipulation d'un geste: flutter: type '_InternalLinkedHashMap' n'est pas un sous-type de type 'Map' flutter: flutter: Soit l'assertion indique une erreur dans le framework lui-même, ou nous devrions fournir un flottement substantiel: plus d'informations dans ce message d'erreur pour vous aider à déterminer et à résoudre la cause sous-jacente. flutter: Dans les deux cas, veuillez signaler cette assertion en signalant un bug sur GitHub: flutter: https://github.com/flutter/flutter/issues/new?template=BUG.md flutter: flutter : Lorsque l'exception a été levée, il s'agissait de la pile: flutter: # 0 NetworkUtil.post1 (package: saranam/network/network_util.Dart: 50: 41) flutter: # 1 RestDatasource.bookPandit (package: saranam/network/rest_data_source. Fléchette: 204: 21)

Quelqu'un face à ce problème? Je n'ai trouvé aucun indice avec le journal ci-dessus.

6
Satya Attili

Essayer

 Map<String, String> requestHeaders = {
       'Content-type': 'application/json',
       'Accept': 'application/json',
       'Authorization': '<Your token>'
     };
12
Sami Kanafani

Je l'ai fait de cette façon en passant une clé privée dans les en-têtes. Cela répondra également à @Jaward:

class URLS {
    static const String BASE_URL = 'https://location.to.your/api';
    static const String USERNAME = 'myusername';
    static const String PASSWORD = 'mypassword';
}

Dans le même fichier .Dart:

class ApiService {

    Future<UserInfo> getUserInfo() async {

      var headers = {
        'pk': 'here_a_private_key',
        'authorization': 'Basic ' +
           base64Encode(utf8.encode('${URLS.USERNAME}:${URLS.PASSWORD}')),
        "Accept": "application/json"
      };

      final response = await http.get('${URLS.BASE_URL}/UserInfo/v1/GetUserInfo',
        headers: headers);

      if (response.statusCode == 200) {
        final jsonResponse = json.decode(response.body);
        return new UserInfo.fromJson(jsonResponse);
      } else {
        throw Exception('Failed to load data!');
      }
    }
}
0
cwhisperer