BadRequest при размещении данных JSON в API Firebase REST - PullRequest
0 голосов
/ 02 июня 2018

У меня есть этот код, который я использую для PUT моей строки JSON в базе данных Firebase:

RestRequest request = new RestRequest("MemberAndChannels/{userId}/{channelId}.json", Method.POST);

request.RequestFormat = DataFormat.Json;
request.AddParameter("auth", accessKey);
request.AddUrlSegment("userId", user.UUID);
request.AddUrlSegment("channelId", channel.UUID);
request.AddHeader("Content-Type", "application/json; charset=utf-8");

request.AddJsonBody(channelJson);

IRestResponse response = client.Execute(request);

if (response.StatusCode == HttpStatusCode.OK)
{

} 
else {

}

Но я получаю следующую ошибку (StatusCode: BadRequest):

"{\n  \"error\" : \"Invalid data; couldn't parse JSON object, array, or value.\"\n}\n"

Я попытался положить те же данные с помощью curl, и это сработало.Не могу понять, где я делаю неправильно.

Ответы [ 3 ]

0 голосов
/ 02 июня 2018

Я изменил код с небольшими изменениями.Пожалуйста, попробуйте с этим

RestRequest request = new RestRequest("MemberAndChannels/{userId}/{channelId}.json", Method.POST);
request.AddParameter("auth", accessKey); // or request.AddHeader("auth", accessKey);
request.AddUrlSegment("userId", user.UUID);
request.AddUrlSegment("channelId", channel.UUID);

request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddParameter("application/json", channelJson, ParameterType.RequestBody);

IRestResponse response = client.Execute(request);

if (response.StatusCode == HttpStatusCode.OK)
{

} 
else {

}
0 голосов
/ 05 июня 2018

У меня возникла та же проблема.

Я исправил это, изменив этот код:

request.AddParameter("auth", accessKey);

на

request.AddQueryParameter("auth", accessKey);

Я надеюсь помочь вам.

Привет * +1011 *

0 голосов
/ 02 июня 2018

Объект сериализуется дважды (двойная сериализация).

Передайте объект channel как есть AddJsonBody, и request будет сериализовать его в JSON перед отправкой тела

request.AddJsonBody(channel);

, предполагая, что channel является объектомкласс

...