【问题标题】:Data isn't sending properly in dio , flutter数据未在 dio 中正确发送,颤动
【发布时间】:2021-08-26 06:35:02
【问题描述】:

我正在尝试使用数据中的 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]

这是邮递员的输出

这是后端输出

请帮助我,我已经尝试了太多但仍然出现错误。

【问题讨论】:

  • 你能从 mongoDB aswel 中添加代码吗?你似乎得到了一个 200 状态码。看起来您正在将错误作为来自后端的数据发送。
  • 我正在编辑帖子,你现在可以检查一下
  • 非常感谢您!我已经解决了!

标签: mongodb api flutter dio


【解决方案1】:

您的回复完全有效。您确实获得了数据和 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

【讨论】:

  • 我用后端代码编辑我的问题,你能检查一下我在后端做错了什么
猜你喜欢
  • 2013-04-26
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2021-08-18
  • 2021-01-19
  • 2012-02-11
  • 2017-08-10
  • 1970-01-01
相关资源
最近更新 更多