У меня возникли проблемы с отправкой POST Http-запроса в мой проект облачных функций firebase из игрового движка Unity3D.
Я получаю ответ с кодом 400, а в консоли firebase вижу следующую ошибку:
Ошибка: недопустимый json при синтаксическом разборе
У меня действительно мало знаний о Http-запросах, и, после некоторого времени, пытающегося найти решение, я хотел бы попросить о помощи.
Вот код клиента:
public void RateLevel(string guid, int rating)
{
RateLevelRequest rlr = new RateLevelRequest (guid, rating.ToString());
string body = rlr.ToJson ();
UnityWebRequest www = UnityWebRequest.Post("myurl", body);
www.SetRequestHeader ("Content-Type", "application/json");
StartCoroutine (MakeRequest (www));
}
/* * * * * * * * * * * * * * * * * * *
* AUXILIAR CLASS FOR HTTP REQUESTS *
* * * * * * * * * * * * * * * * * * */
[System.Serializable]
public class RateLevelRequest
{
public string guid;
public string rating;
public RateLevelRequest(string _guid, string _rating)
{
guid = _guid;
rating = _rating;
}
public string ToJson()
{
string json = JsonUtility.ToJson (this);
Debug.Log ("RateLevelRequest Json: " + json);
return json;
}
}
Я могу гарантировать, что json правильно сформирован с такими значениями.
{"guid": "fake-guid", "rating": "- 1"}
А вот моя текущая развернутая функция в firebase-functions.
exports.rate_level = functions.https.onRequest((req, res) => {
if(req.method === 'POST')
{
console.log('guid: ' + req.body.guid);
console.log('rating: ' + req.body.rating);
console.log('invented var: ' + req.body.myinvention);
if(req.body.guid && req.body.rating &&
(req.body.rating == 1 || req.body.rating == -1))
{
res.status(200).send('You are doing a post request with the right fields and values');
}
else
{
res.status(403).send('Required Fields are not Defined!')
}
}
else
{
res.status(403).send('Wrong Request Method!');
}
});
Кто-нибудь пробовал это и преуспел раньше?
Заранее спасибо!