数据在 dio 中发送不正确,颤振
Data isn't sending properly in dio , flutter
我正在尝试使用数据中的 sharedPreference 传递我从登录屏幕传递的令牌和用户名,我的 api 在邮递员上正常工作,它根据我的要求成功响应,但它仍然给我错误 response.data.
这是我的更新代码
Dio dio=new Dio();
var data={
'username': getname,
'token': getaccesstoken
};
await dio
.post(localhostUrlTimeIn,data: json.encode(data))
.then((onResponse) async {
print(onResponse.headers);
print(onResponse.statusCode);
print(onResponse.data);
}).catchError((onerror){
print(onerror.toString());
//showAlertDialog(context);
});
这是日志
I/flutter (17731): 1
I/flutter (17731): x-powered-by: Express
I/flutter (17731): connection: keep-alive
I/flutter (17731): keep-alive: timeout=5
I/flutter (17731): date: Wed, 09 Jun 2021 21:07:41 GMT
I/flutter (17731): content-length: 7
I/flutter (17731): etag: W/"7-Vuu5vA8hV5HSudFEr8bWQajjaE0"
I/flutter (17731): content-type: application/json; charset=utf-8
I/flutter (17731): 200
I/flutter (17731): Error
--------------------------------更新----- ------------------
这里是后端代码
TimeIn=(req,res)=>{
jwt.verify(req.body.token, 'secret' , function(err, decoded) {
if (err)
{
err["expiredAt"] = err["expiredAt"].toLocaleString();
res.status(300).json(err)
}else{
let today = new Date()
Today = today.toLocaleString();
var date = Today.split(",")
var document = new User();
User.find({"username":req.body.username},function(err,data){
var dat = date[0];
var da = dateformat(dat,"yyyy-mm-dd")
console.log(da);
document.username= data[0].username;
document.Date = da;
document.TimeIn = date[1];
document.TimeOut = "";
document.manager_id= data[0].manager_id,
document.code = data[0].code
document.save();
console.log(document);
var token = jwt.sign({
data: 'foobar'
}, 'secret', { expiresIn: "30 minute"})
res.status(200).json({auth: true, AccessToken: token})
})
}
})
}
这里我在app.js文件
中调用上面的方法
const TimeIn = require('./routes/TimeInTimeOut')
app.post("/TimeIn",checkToken,function(req,res){
console.log("api hit")
TimeIn.TimeIn(req,res)
})
这里是我检查令牌的地方,它是在 app.js 文件中创建的!!
function checkToken(req,res,result){
const header= req.body.token;
if(typeof header !== 'undefined'){
const bearer =header.split('.');
const token = bearer[1]
//console.log(token)
req.token = token
//next();
result();
}else
res.json("Error")
}
我现在在前端遇到这个错误
DioError [DioErrorType.response]: Http status error [300]
这是邮递员的输出
这是后端输出
请帮帮我,我已经尝试了太多,但仍然出现错误。
您的回复完全有效。您确实会取回数据和 200 状态代码。这意味着请求成功。您正在将错误分配给请求服务器端的数据。该问题不在您在客户端中的请求中。
// headers
I/flutter (17731): 1
I/flutter (17731): x-powered-by: Express
I/flutter (17731): connection: keep-alive
I/flutter (17731): keep-alive: timeout=5
I/flutter (17731): date: Wed, 09 Jun 2021 21:07:41 GMT
I/flutter (17731): content-length: 7
I/flutter (17731): etag: W/"7-Vuu5vA8hV5HSudFEr8bWQajjaE0"
I/flutter (17731): content-type: application/json; charset=utf-8
//Statuscode
I/flutter (17731): 200
//data
I/flutter (17731): Error
我正在尝试使用数据中的 sharedPreference 传递我从登录屏幕传递的令牌和用户名,我的 api 在邮递员上正常工作,它根据我的要求成功响应,但它仍然给我错误 response.data.
这是我的更新代码
Dio dio=new Dio();
var data={
'username': getname,
'token': getaccesstoken
};
await dio
.post(localhostUrlTimeIn,data: json.encode(data))
.then((onResponse) async {
print(onResponse.headers);
print(onResponse.statusCode);
print(onResponse.data);
}).catchError((onerror){
print(onerror.toString());
//showAlertDialog(context);
});
这是日志
I/flutter (17731): 1
I/flutter (17731): x-powered-by: Express
I/flutter (17731): connection: keep-alive
I/flutter (17731): keep-alive: timeout=5
I/flutter (17731): date: Wed, 09 Jun 2021 21:07:41 GMT
I/flutter (17731): content-length: 7
I/flutter (17731): etag: W/"7-Vuu5vA8hV5HSudFEr8bWQajjaE0"
I/flutter (17731): content-type: application/json; charset=utf-8
I/flutter (17731): 200
I/flutter (17731): Error
--------------------------------更新----- ------------------
这里是后端代码
TimeIn=(req,res)=>{
jwt.verify(req.body.token, 'secret' , function(err, decoded) {
if (err)
{
err["expiredAt"] = err["expiredAt"].toLocaleString();
res.status(300).json(err)
}else{
let today = new Date()
Today = today.toLocaleString();
var date = Today.split(",")
var document = new User();
User.find({"username":req.body.username},function(err,data){
var dat = date[0];
var da = dateformat(dat,"yyyy-mm-dd")
console.log(da);
document.username= data[0].username;
document.Date = da;
document.TimeIn = date[1];
document.TimeOut = "";
document.manager_id= data[0].manager_id,
document.code = data[0].code
document.save();
console.log(document);
var token = jwt.sign({
data: 'foobar'
}, 'secret', { expiresIn: "30 minute"})
res.status(200).json({auth: true, AccessToken: token})
})
}
})
}
这里我在app.js文件
中调用上面的方法const TimeIn = require('./routes/TimeInTimeOut')
app.post("/TimeIn",checkToken,function(req,res){
console.log("api hit")
TimeIn.TimeIn(req,res)
})
这里是我检查令牌的地方,它是在 app.js 文件中创建的!!
function checkToken(req,res,result){
const header= req.body.token;
if(typeof header !== 'undefined'){
const bearer =header.split('.');
const token = bearer[1]
//console.log(token)
req.token = token
//next();
result();
}else
res.json("Error")
}
我现在在前端遇到这个错误
DioError [DioErrorType.response]: Http status error [300]
这是邮递员的输出
这是后端输出
请帮帮我,我已经尝试了太多,但仍然出现错误。
您的回复完全有效。您确实会取回数据和 200 状态代码。这意味着请求成功。您正在将错误分配给请求服务器端的数据。该问题不在您在客户端中的请求中。
// headers
I/flutter (17731): 1
I/flutter (17731): x-powered-by: Express
I/flutter (17731): connection: keep-alive
I/flutter (17731): keep-alive: timeout=5
I/flutter (17731): date: Wed, 09 Jun 2021 21:07:41 GMT
I/flutter (17731): content-length: 7
I/flutter (17731): etag: W/"7-Vuu5vA8hV5HSudFEr8bWQajjaE0"
I/flutter (17731): content-type: application/json; charset=utf-8
//Statuscode
I/flutter (17731): 200
//data
I/flutter (17731): Error