Saturday 8 April 2017

How to get response from Node Server using UnityWebRequest

I am creating a Registration Scene on Unity. On the backend I have NodeJS server with MongoDB. Registration is successful and data is saved on Mongo too.

This is my NodeJS api for register

api.post('/register', (req,res) => {
    Account.register(new Account({username: req.body.username}), req.body.password, function(err, account){
      console.log("acc: "+account);
      if(err){
        if (err.name == "UserExistsError") {
          console.log("User Exists");
          return res.status(409).send(err);
        }else {
          console.log("User Error 500");
          return res.status(500).send(err);
        }
      }else {
        let newUser = new User();
        newUser.accountid = account._id;
        newUser.name = req.body.fullname;
        newUser.gender = req.body.gender;
        newUser.role = req.body.role;
        newUser.country = req.body.country;
        newUser.coins = req.body.coins;
        newUser.save(err => {
          if(err){
            console.log(err);
            return res.send(err);
          }else{
            console.log('user saved');
            res.json({ message: 'User saved' });
          }
        });
      }
      passport.authenticate(
        'local', {
          session: false
        })(req,res, () => {
          res.status(200).json({ registermsg: 'Successfully created new account'});
        });
    });
  });

And this is my POST co-routine in Unity C#

IEnumerator Post(string b) {

    byte[] bytes = System.Text.Encoding.ASCII.GetBytes(b);

    using (UnityWebRequest www = new UnityWebRequest(BASE_URL, UnityWebRequest.kHttpVerbPOST)) {
        UploadHandlerRaw uH = new UploadHandlerRaw(bytes);
        www.uploadHandler = uH;
        www.SetRequestHeader("Content-Type", "application/json");
        yield return www.Send();

        if (www.isError) {
            Debug.Log(www.error);
        } else {
            lbltext.text = "User Registered";
            Debug.Log(www.ToString());
            Debug.Log(www.downloadHandler.text);
        }
    }
}

I am trying to Debug.Log(www.downloadHandler.text); but I get NullReferenceException.

I'd like to ask, is the way I am using to return response in my api correct? If yes, how can I use that response in Unity side.



via Luzan Baral

No comments:

Post a Comment