【问题标题】:DioError [DioErrorType.RESPONSE]: Http status error [500], why?DioError [DioErrorType.RESPONSE]:Http 状态错误 [500],为什么?
【发布时间】:2023-03-25 19:52:02
【问题描述】:

我是 Flutter 新手,我在项目中使用 Dio 来制作会员注册功能.. 但是每次执行注册过程时,调试控制台都会给我这个错误

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

但是,当我尝试向 POSTMAN 注册时,它是成功的。所以我不确定问题出在哪里..这是我的代码,你们能帮帮我吗?我已经坚持了好几个星期了..

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);
  }

【问题讨论】:

    标签: json flutter dart http-error dio


    【解决方案1】:

    当我尝试使用 Dio 发送图像时,我遇到了同样的问题。但是问题只出现在我在mac中使用iphone模拟器时,在android模拟器中一切正常,所以我尝试在真正的iphone中启动调试并编译我的应用程序,没有模拟器,我没有这个错误。 可能你也有同样的问题,希望能帮到你。

    【讨论】:

    • 你能帮我写下下面的代码吗?您是如何使用 dio 在 social_media 中发布此图像对象列表的? “sosial_media”:[{“sosial_media_id”:_sosmedrgprogramming,“nama”:sosialmediamember,“截图”:等待Dio.MultipartFile.fromFile(_fotoSosmed.path),}],
    • 字符串文件名 = _image.path.split('/').last; FormData formData = FormData.fromMap({ "chat_id": chatID, "file": await MultipartFile.fromFile(_image.path, filename: filename), });
    【解决方案2】:

    这意味着您的服务器以 InternalServerError 响应,但 dio 将此视为一个例外来解决此问题,可以使用 try 和 catch blocs 或将其传递给您的 dio 实例

     final res = await dio.delete(
              url,
              data: postData,
              options: Options(
    
                followRedirects: false,
                // will not throw errors
                validateStatus: (status) => true,
                headers: headers,
              ),
            );
    
    
    

    【讨论】:

    • 我会试试看,如果它有效,会告诉你。但是什么样的“内部服务器错误”?是不是我在发送无效数据?
    • Internal Server 错误很可能意味着在某些地方存在未捕获的异常,这会导致在没有适当响应的情况下结束请求生命周期,因为开发人员使用的是 Django 或 Laravel 等服务器端框架,因此 [the frame work] 将格式化异常并以此错误响应,以免请求永远挂起
    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2022-11-29
    • 2022-12-23
    • 2020-03-22
    • 2020-04-18
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多