json - DioError [DioErrorType.RESPONSE]: Error de estado HTTP [500], ¿por qué?

CorePress2024-01-24  10

Soy nuevo en flutter, uso Dio en mi proyecto para crear funciones de registro de miembros... pero cada vez que ejecuto el proceso de registro, la consola de depuración me da este error

I/flutter (13428): Instance of 'FormData'
I/flutter (13428): DioError [DioErrorType.RESPONSE]: Http status error [500]

Sin embargo, cuando intenté registrarme en POSTMAN, fue un éxito. Así que no estoy seguro de dónde está el problema... aquí está mi código, ¿podrían ayudarme? He estado estancado en esto durante semanas...

final String url = "https://api.censored.org/api/members/register";

Dio.FormData formData = Dio.FormData.fromMap({
  "nama_lengkap": name,
  "tempat_lahir": tempatlahir,
  "tanggal_lahir": selectedDate.toString(),
  "email": email,
  "password": password,
  "username": username,
  "nomor_ktp": noKTP,
  "alamat_ktp": alamatktpmember,
  "alamat_domisili": alamatmember,
  "pekerjaan": pekerjaanmember,
  "alamat_pekerjaan": alamatperusahaanmember,
  "no_whatsapp": noWAmember,
  "no_hp": noteleponmember,
  "nama_pemilik_rekening": namarekmember,
  "nomor_rekening": norekmember,
  "bank_id": _valBank,
  "aggrement": _eulargprogramming,

  //Foto
  "foto_ktp": await Dio.MultipartFile.fromFile(_fotoKtp.path),
  "selfie_dengan_ktp": await Dio.MultipartFile.fromFile(_fotoSelfie.path),
  "foto_kk": await Dio.MultipartFile.fromFile(_fotoKK.path),
  "foto_pengenal_lainnya":
      await Dio.MultipartFile.fromFile(_fotoKartu.path),
  "foto_buku_rekening":
      await Dio.MultipartFile.fromFile(_fotoRekening.path),
  "foto_profil": await Dio.MultipartFile.fromFile(_fotoSelfie.path),

  //Array
  "penjamin": {
    "stakeholder_id": _subrgProgramming1,
    "nama": penjaminNama,
    "nomor_ktp": penjaminNoktp,
    "alamat_ktp": penjaminAlamat,
    "alamat_domisili": penjaminDomisili,
    "no_hp": notelppenjamin,
  },
  "sosial_media": [
    {
      "sosial_media_id": _sosmedrgprogramming,
      "nama": sosialmediamember,
      "screenshot": await Dio.MultipartFile.fromFile(_fotoSosmed.path),
    }
  ],
  "saudara_kerabat": [
    {
      "stakeholder_id": 4,
      "nama": namasaudara,
      "no_hp": notelpsaudara,
    },
    {
      "stakeholder_id": 5,
      "nama": namakerabat1,
      "no_hp": notelpkerabat1,
    },
    {
      "stakeholder_id": 5,
      "nama": namakerabat2,
      "no_hp": notelpkerabat2,
    },
    {
      "stakeholder_id": 5,
      "nama": namakerabat3,
      "no_hp": notelpkerabat3,
    }
  ],
});
print(formData);
var res;
try {
  Dio.Dio doo = Dio.Dio();
  doo.options.headers['Accept'] = 'application/json';
  doo.options.contentType = 'application/json';
  doo.options.followRedirects = false;
  Dio.Response response = await doo.post(url, data: formData);

  if (response.statusCode == 200) {
    print(response.data);
    res = response;
    final data = jsonDecode(res.body);
    print(res);

    int regvalue = data['value'];
    String message = data['message'];
    if (regvalue == 1) {
      setState(() {
        Navigator.pop(context);
      });
      print(message);
      registerToast(message);
    } else if (regvalue == 2) {
      print(message);
      registerToast(message);
    } else {
      print(message);
      registerToast(message);
    }
  }
} on Dio.DioError catch (e) {
  if (e.response.statusCode == 422) {
    print(e.response.data);
  }
} on Dio.DioError catch (e) {
  if (e.response.statusCode == 500) {
    print(e.response.data);
  }
}


}

  registerToast(String toast) {
    return Fluttertoast.showToast(
        msg: toast,
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.BOTTOM,
        timeInSecForIos: 1,
        backgroundColor: Colors.red,
        textColor: Colors.white);
  }


------------------------------------

esto significa que su servidor respondió con InternalServerError pero dio ve esto como una excepción para solucionarlo, ya sea use try and catch blocs o pase esto a su instancia de dio

 final res = await dio.delete(
          url,
          data: postData,
          options: Options(

            followRedirects: false,
            // will not throw errors
            validateStatus: (status) => true,
            headers: headers,
          ),
        );


2

Lo intentaré y te haré saber si funciona... pero ¿qué tipo de "Error interno del servidor" ? ¿Es como si estuviera enviando datos no válidos?

-Daffa Naufal

29 de marzo de 2021 a las 8:53

El error interno del servidor probablemente significa que hay una excepción no detectada en algún lugar, lo que lleva a finalizar el ciclo de vida de la solicitud sin la información apropiada.Comió la respuesta... dado que el desarrollador está utilizando un marco del lado del servidor como Django o Laravel, [el marco] formateará la excepción y respondió con este error para no dejar la solicitud suspendida para siempre

- Ahmed Masoud

29/03/2021 a las 13:24



------------------------------------

Tuve el mismo problema cuando intento enviar una imagen con Dio. Pero el problema solo aparece cuando uso el emulador de iPhone en una Mac, en un emulador de Android todo está bien, así que intenté iniciar la depuración y compilar mi aplicación en un iPhone real, sin emulador, y no obtuve este error. Quizás tú también tengas el mismo problema, espero ayudarte.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare