Daffa Naufal
Daffa Naufal

Reputation: 43

DioError [DioErrorType.RESPONSE]: Http status error [500], why?

I'm new to flutter, I use Dio in my project to make Members Register features.. but everytime I execute the register process, the Debug Console give me this error

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

however, when I tried to register with POSTMAN, It was a success. So I'm not sure where the problem is.. here's my code, could you guys please help me? i've been stuck on this for weeks..

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

Upvotes: 4

Views: 26494

Answers (4)

Hafiz Hamza
Hafiz Hamza

Reputation: 9

I was getting same Error. My APi working fine on Postmen but getting internal server error [500] in DioError. I just add '/' on the end of my URL. Its Solve the issue.

Upvotes: 1

Noman Hassan
Noman Hassan

Reputation: 259

After Hours of struggle i found the way of uploading multiple images through dio packge here is my code you can use it accordingly

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:rent_house/screens/Admin/View_Property/AdminViwe.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:http_parser/http_parser.dart';

var token;

Dio dio = Dio();
var apiURL = 'https://denga.r3therapeutic.com/public/api/addpost';
FormData formData = FormData();
Future<String> adminAddproperty({
  title,
  address,
  price,
  area,
  bedrooms,
  bathrooms,
  parking,
  other,
  description,
  List<File>? imageFileList,
  context,
}) async {
  List uploadList = [];
  for (var imageFiles in imageFileList!) {
    uploadList.add(await MultipartFile.fromFile(imageFiles.path,
        filename: imageFiles.path.split('/').last,
        contentType: MediaType('image', 'jpg')));
  }
  FormData formData = FormData.fromMap({
    'title': title,
    'address': address,
    'price': price,
    'area': area,
    'bedrooms': bedrooms,
    'bathrooms': bathrooms,
    'parking': parking,
    'others': "huhuhuhuh",
    'description': description,
    'images[]': uploadList,
  });
  SharedPreferences pref = await SharedPreferences.getInstance();
  token = pref.getString('token');
  print('AdminApisToken =$token');
  print('_images');

  Response responce;

    responce = await dio.post(
        apiURL ,
        data: formData,
        options: Options(headers: {
          HttpHeaders.authorizationHeader: "Bearer $token",
        }));
try{
  if(responce.data=="false"){
 Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => AdminProperty()),
    );
    Fluttertoast.showToast(
        msg: "Data Upload Successfull", backgroundColor: Colors.cyan);
  }
else{
      Fluttertoast.showToast(
        msg: "Wrong Input Data Type", backgroundColor: Colors.cyan);
}
    return '';
  } catch (e) {
    Fluttertoast.showToast(
        msg: "Internet Connection Error", backgroundColor: Colors.cyan);
    return '';
  }
}

Upvotes: -1

Jos&#233; Zenteno
Jos&#233; Zenteno

Reputation: 1

I had the same problem when I try send a image with Dio. But the problem only appears when i use the iphone emulator in a mac, in a android emulator all is ok, so I tried to starting the debug and compile my app in a real iphone, no emulator, and i didtn have this error. Maybe you have the same problem too, i hope help you.

Upvotes: 0

Ahmed Masoud
Ahmed Masoud

Reputation: 339

this means your sever responded with InternalServerError but dio sees this as an exception to fix this either use try and catch blocs or pass this to your dio instace

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

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


Upvotes: 14

Related Questions