首页 > 解决方案 > 颤振:DioError [DioErrorType.response]:Http状态错误[400]

问题描述

我创建了一个登录表单,它从 api 获取凭据并且运行良好。我有两种类型的用户员工和经理。所以有两个仪表板。我将他们的类型存储在名称为 Type 的数据库中,当我得到登录 api 的响应时,获取 Type 值并将其存储在类型 varibale 中并检查它是否等于 Employee 将重定向到员工仪表板或经理仪表板。

它也工作正常,我测试了 2 到 3 次,但是当我再次运行我的应用程序并以员工身份登录时,它会将我重定向到员工仪表板,但是当我尝试以经理身份登录时,它向我发送了这个 dio 400 错误。

我也进行了调试,我也在正文参数和数据中获取值,但之后它会打印 400 错误。

当我在邮递员上运行登录 api 并传递经理凭据时,它也可以完美地工作。

这是我的登录功能


Future login() async {

    Dio dio=new Dio();
    var data={
      'username': user.username,
      'password': user.password,
      'date':formattedDate

      

    };
    await dio
    .post(localhostUrlLogin,data: json.encode(data)) // it prints error after this line
      .then((onResponse) async {
        SharedPreferences myPrefs=await SharedPreferences.getInstance();
        
        print(onResponse.data);
        print(onResponse.statusCode);
        
        String type=onResponse.data['User']['Type'];
        print(type);

        if(type=='Employee')
        {
          Navigator.push(
          context, new MaterialPageRoute(builder: (context) => Employee()));
        }
        else if(type=='Manager'){
          Navigator.push(
          context, new MaterialPageRoute(builder: (context) => Manager()));
        }
     
        
       
        myPrefs.setString('name',name );
        myPrefs.setString('email', email);
        myPrefs.setString('designation', designation);
        myPrefs.setString('accesstoken', token);
        myPrefs.setBool('timeinStatus', timeinstatus);
        myPrefs.setString('DOB', dob);
        
      }).catchError((onerror){
        print("error "+onerror.toString());
        showAlertDialog(context);
    });
  }

请帮助,如何解决这个问题。

标签: flutterdio

解决方案


推荐阅读