flutter - 颤振: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);
});
}
请帮助,如何解决这个问题。
解决方案
推荐阅读
- php - 正则表达式在 preg_match 函数中的工作方式不同
- javascript - Force open A Selectpicker Programmatically by Javascript
- javascript - 为什么将插槽视为作用域插槽时此激活器文本会消失?
- javascript - 在新选项卡上保留输入值
- git - Error while evaluating a Resource Statement, Unknown resource type: 'vcsrepo'
- google-chrome - Firefox 搞砸了 SVG 使用/定义
- python - Python:如何将两个嵌套列表合并为一个嵌套列表
- mysql - 从仅存在于其中一个表中的多个表中选择一行
- java - 如何检查我的所有文本字段是否为空 JavaFX
- numpy - 两个矩阵的所有列组合的分量乘积