Flutter: отправка тела JSON для запроса Http GET - PullRequest
2 голосов
/ 25 марта 2019

Мне нужно сделать запрос GET к API из моего приложения Flutter, для которого требуется тело запроса в формате JSON (raw).

Я протестировал API с телом запроса JSON в Postman, и, похоже, он работает нормально.

enter image description here

Теперь в моем приложении Flutter я пытаюсь сделать то же самое:

_fetchDoctorAvailability() async {
    var params = {
      "doctor_id": "DOC000506",
      "date_range": "25/03/2019-25/03/2019" ,
      "clinic_id":"LAD000404"
    };

    Uri uri = Uri.parse("http://theapiiamcalling:8000");
    uri.replace(queryParameters: params);

    var response = await http.get(uri, headers: {
      "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
      HttpHeaders.contentTypeHeader: "application/json",
      "callMethod" : "DOCTOR_AVAILABILITY"
    });

    print('---- status code: ${response.statusCode}');
    var jsonData = json.decode(response.body);

    print('---- slot: ${jsonData}');
}

Однако API выдает ошибку: 1013 *

{сообщение: отсутствует ввод json., Статус: false}

Как отправить необработанное (или, скорее, JSON) тело запроса для запроса HETT GET во Flutter?

1 Ответ

1 голос
/ 25 марта 2019

uri.replace... возвращает новый Uri, поэтому вы должны присвоить его новой переменной или использовать непосредственно в функции get.

final newURI = uri.replace(queryParameters: params);

var response = await http.get(newURI, headers: {
  "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
  HttpHeaders.contentTypeHeader: "application/json",
  "callMethod" : "DOCTOR_AVAILABILITY"
});

используя сообщение:

      var params = {
        "doctor_id": "DOC000506",
        "date_range": "25/03/2019-25/03/2019" ,
        "clinic_id":"LAD000404"
      };

      var response = await http.post("http://theapiiamcalling:8000", 
      body: json.encode(params)
      ,headers: {
        "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
        HttpHeaders.contentTypeHeader: "application/json",
        "callMethod" : "DOCTOR_AVAILABILITY"
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...