Flutter Dio отправляет пустой запрос на сервер Laravel

#laravel #flutter #laravel-7 #dio

#laravel #flutter #laravel-7 #dio

Вопрос:

Код Flutter:

Обычный объект Data JSON

 var data = {
    'society_id': widget.societyId,
    'name': _currentCategory,
    'details': txtDescription.text,
    'type': "Society Residential Complaint"
};
  

FormData для запроса Dio

 FormData formData = FormData.fromMap({
    'society_id': widget.societyId,
    'name': _currentCategory,
    'details': txtDescription.text,
    'type': "Society Residential Complaint"
});
if (selectedFile != null) {
    String path = selectedFile.path;
    String imagename = selectedFile.path.split('/').last;
    print("Photo Selected");
    formData.files.add(
      MapEntry(
        "photos[]",
        await MultipartFile.fromFile(
          path,
          filename: imagename.toString(),
        ),
      ),
    );
}
  

Функция, которая сделает запрос Dio Post

 Future raiseComplaint(FormData formData, data) async {
    await _getToken();
    String requestUrl = serverURL   '/complaint/add';
    print("Sending Req: $requestUrl");
    print("--- complaint details: $formData");
    print("--- complaint details: $data");

    try {
      dio.options.headers['Content-Type'] = 'application/json';
      dio.options.headers["Authorization"] = "Bearer $_accessToken";
      Response serverResponse = await dio.post(requestUrl, data: formData);
      var response = _returnResponse(serverResponse);
      print("Recieving Res: $requestUrl");
      print(response);
      return response;
    } catch (e) {
      throw e;
    }
}
  

Запрос вызова

 var response = await raiseComplaint(formData, data);
  

Проблема:
из функции raiseComplaint(), если я отправляю обычный объект json, я получаю все параметры. Мне также нужны файлы вложений, поэтому я использую объект Dio FormData. Объект FormData переносит все параметры в fields map и вложения в files map, которые я не могу получить на сервере.

Объект FormData 1

Объект FormData 2

На сервере (Laravel) я не получаю никаких параметров или файлов из запроса из-за сбоя проверки laravel. Я искал документацию по пакету Dio, но не нашел никакой помощи. Нам нужно выполнить запрос Dio, поэтому, пожалуйста, если кто-то сталкивался с этой ошибкой в прошлом, помогите. Спасибо.

Комментарии:

1. Вы должны использовать multipart/form-data вместо application/json , поскольку отправляете файл.

2. @AdlanArifZakaria Спасибо за ответ, мы тоже это пробовали, но из мобильного приложения данные не отправляются, поэтому мы ничего не смогли получить на стороне сервера. Я зарегистрировал массив PHP $ _POST amp; $ _FILES, но оба они пусты.

3. какие-либо обновления? Такая же проблема