api - Flutter Rest API试图获取非obj的属性“密码”
问题描述
我试图在颤振中使用 Rest API 创建登录表单,但是我不断收到错误。对于登录,API 需要 3 个变量;电子邮件、密码和设备
这是我的登录功能
String email;
String password;
String device="mobile";
TextEditingController passwordcontroller=TextEditingController();
TextEditingController emailcontroller=TextEditingController();
loginfunction(String email, String password, String device)async{
// Map data={"email":email,
// "password":password,"device":device};
var jsonData;
SharedPreferences sharedPreferences=await SharedPreferences.getInstance();
var response= await http.post('https://f.nz/api/auth/Login',headers:{
"key": "Client-Version",
"value": "{{client_version}}-1",
"type": "text"
},
body: {
"email": email,
"password": password,
"device": device,
});
// return response.data;
if (response.statusCode==200){
jsonData= json.decode(response.body);
setState(() {
sharedPreferences.setString("token", jsonData["token"]);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
OtpPage()));
});
}
else{
print(response.body);
print(response.statusCode);
print(email);
print(device);
}
}
这是填写电子邮件和密码字段后调用函数的地方
GestureDetector(
onTap: () async {
try{
await loginfunction(email, password,device);
}
catch(e){
setState(() {
error=e.message;
});
}
},
child: Container(
padding: EdgeInsets.fromLTRB(.0, 0.0, 0.0, 0.0),
height: 35.0,
width: 150.0,
child: Material(
borderRadius: BorderRadius.circular(40.0),
color: Color(0xffa6ce38),
elevation: 7.0,
child: Center(
child: Text(
"Sign in",
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 16.0, color: Colors.white),
),
),
),
),
),
每次我运行代码并尝试登录时,这是终端中的错误
D/libc-netbsd(7365):[getaddrinfo]:mtk 主机名=fhm.soop.co.nz;服务名称=(空);网络ID=0;标记=0 D/libc-netbsd(7365):getaddrinfo(app_uid:10366 D/libc-netbsd(7365):getaddrinfo()uid prop:D/libc-netbsd(7365):getaddrinfo()getuid():10366 D /libc-netbsd(7365):[getaddrinfo]:mtk ai_addrlen=0;ai_canonname=(null);ai_flags=1024;ai_family=0 D/libc-netbsd(7365):getaddrinfo:fhm.soop.co.nz 得到结果从代理 gai_error = 0 I/flutter (7365): I/flutter (7365): I/flutter (7365): I/flutter (7365): 遇到 PHP 错误 I/flutter (7365): I/flutter (7365) ):
严重性:通知
我/颤振(7365):消息:试图获取非对象的属性“电子邮件”
我/颤振(7365):文件名:auth/Login.php
我/颤振(7365):行号:43
I/颤动(7365):I/颤动(7365):I/颤动(7365):回溯:
I/flutter (7365):I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365): I /flutter (7365): 文件: C:\xampp\htdocs\api\application\controllers\auth\Login.php
I/flutter (7365): Line: 43
I/flutter (7365): Function: _error_handler I/flutter (7365): I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365): I/flutter (7365): 文件: C:\xampp\htdocs \api\application\libraries\REST_Controller.php
I/flutter (7365): Line: 708
I/flutter (7365): Function: index_post I/flutter (7365): I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365):
I/flutter (7365): I /flutter (7365): 文件: C:\xampp\htdocs\api\index.php
I/flutter (7365): Line: 308
I/flutter (7365): Function: require_once I/flutter (7365): I/flutter (7365):
I/flutter (7365):
I/flutter (7365): I/flutter (7365): I/flutter (7365): I/flutter (7365): I /flutter (7365): 遇到 PHP 错误 I/flutter (7365): I/flutter (7365):
严重性:通知
我/颤振(7365):消息:尝试获取非 obj I/flutter(7365)的属性“密码”:400 I/flutter(7365):email@email.com I/flutter(7365):mobile
解决方案
如果您使用的电子邮件在您的数据库中不存在,则这是来自您的 php 服务器的结果。我看到你的错误说email@email.com
。您的服务器正在寻找用户,但没有找到,并返回 null。或者您可能在服务器端错误地解析数据。我会先在那里检查。
你的错误还说
Message: Trying to get property 'email' of non-object
I/flutter ( 7365):
Filename: auth/Login.php
message: A PHP Error was encountered
因此,几乎很清楚这不是颤振问题,只需确保您确实将您的姓名和密码从 TextEditingControllers 传递到您的 POST 请求。
为了验证这个理论,在请求中硬编码你的凭据,看看错误是否仍然存在并且没有改变,然后肯定去你的 php 代码。
body: {
"email": 'email@gmail.com',
"password": 'youSuperStrongpassword124234',
"device": device,
});
此外,你应该jsonEncode
你的 POST 请求的正文。
推荐阅读
- amazon-web-services - 使用 Lambda 的 AWS API 的权限问题
- php - 通过 AJAX 进行 SQL 插入和删除查询
- azure - Azure Functions + nodejs + vscode:启动配置以调试多个 azure function funcs?
- jquery - 如何对齐 td 标签内的 div 标签,使它们排成一行
- python - 使用循环将dict插入数据框
- pytorch - CoreML:为 ONNX RandomNormal 创建自定义层
- python-3.x - 我试图在 if 语句发生后让图像保持更长时间
- java - 比较两个字符串,都用正则表达式
- android - 一旦在画布上绘制矩形,你能改变它的颜色吗?
- javascript - 使用ajax和python发送文件后从外部url获取数据