繁体   English   中英

在Firebase REST API上PUT JSON数据时的BadRequest

[英]BadRequest when PUT JSON data on Firebase REST API

我有这个代码用于在Firebase数据库上输出我的JSON字符串:

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 PUTing相同的数据,它工作。 无法弄清楚我做错了什么。

该对象被序列化两次(双序列化)。

channel对象原样传递给AddJsonBodyrequest在发送正文之前将其序列化为JSON

request.AddJsonBody(channel);

假设这里的channel是一个类的对象

我稍微修改了代码。 请试试这个

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 {

}

我有同样的问题。

我发现它改变了这段代码:

request.AddParameter("auth", accessKey);

通过

request.AddQueryParameter("auth", accessKey);

我希望能帮助你。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM