ClientException, и я не могу напечатать возвращаемое значение (тело запроса) - PullRequest
1 голос
/ 24 апреля 2020

Хорошо, я схожу с ума здесь, в моем приложении флаттера, я использую эту функцию для выполнения почтовых запросов:

 Future<Map> postRequest(String serviceName, Map<String, dynamic> data) async {
    var responseBody = json.decode('{"data": "", "status": "NOK"}');
    try {
      http.Response response = await http.post(
        _urlBase + '$_serverApi$serviceName',
        body: jsonEncode(data),
      );
      if (response.statusCode == 200) {
        responseBody = jsonDecode(response.body);
        //
        // If we receive a new token, let's save it
        //
        if (responseBody["status"] == "TOKEN") {
          await _setMobileToken(responseBody["data"]);

          // TODO: rerun the Post request
        }
      }
    } catch (e) {
      // An error was received
      throw new Exception("POST ERROR");
    }
    return responseBody;
  }

Проблемы:

  1. Я получаю ClientException (не каждый раз)
  2. В другом классе я сохранил результат этой функции в переменной, он должен возвращать Future<Map<dynamic, dynamic>>, когда я печатал его, он показывает:

    I/flutter ( 9001): Instance of 'Future<Map<dynamic, dynamic>>'

Но когда я запускаю тот же почтовый запрос напрямую (без использования функции), он работает и показывает сообщение, которое я ждал.

примечание: в обоих случаях (функция или нет) на стороне сервера это было одно и то же.

это функция, в которой я использовал почтовый запрос:

void _confirm() {
    if (_formKey.currentState.saveAndValidate()) {
      print(_formKey.currentState.value);
      var v = auth.postRequest("se_connecter", _formKey.currentState.value);
      print(v);
    } else {
      print(_formKey.currentState.value);
      print("validation failed");
    }
  }

1 Ответ

0 голосов
/ 25 апреля 2020

Хорошо для второй проблемы, я только что сделал эти изменения:

void _confirm() async {

и

var v = await auth.postRequest('se_connecter', _formKey.currentState.value);

и да, это глупо.

Для исключения, это было вызвано ssl-шифрованием, поэтому я удалил его из своего бэкэнда.

...