为什么我不能使用REST API向Firebase发送一些UTF-8字符?

时间:2015-10-12 05:44:42

标签: rest utf-8 firebase

我使用C ++中的REST api在Firebase上创建了一个简单的注释存储系统。我最近遇到了一个问题,即包含中文字符会阻止上传评论。这是一个失败的数据包示例:

POST / HTTP/1.1
Host: 127.0.0.1:10000
Accept: */*
User-Agent: CommentClient/1.0
Connection: keep-alive
Keep-Alive: timeout=0, max=0
Content-Type: application/json; charset=utf-8
Content-Length: 198
Pragma: no-cache

{
    "CommentObject":
    {
        "Comment": "是",
        "Location": "X=1.000 Y=2.000 Z=3.000",
        "Rotation": "P=5.000000 Y=6.000000 R=4.000000",
        "Date": "2015.10.12-15.24.48",
        "Resolved": false
    }
}

当我尝试发送此数据包时,我收到两个不同的错误。

最初,我收到Http Code 400,错误为:error : Invalid data; couldn't parse JSON object, array, or value.Perhaps you're using invalid characters in your key names.

当我在重新启动程序之前发出任何后续请求时,我得到Http Code 405,错误为:error: Unsupported request type

我的要求有问题吗?我可以通过仪表板或使用Vulcan将相同的数据放入Firebase。有人可以提出解决方案吗?

1 个答案:

答案 0 :(得分:0)

好吧,为了后人的缘故,问题只是我使用的一个插件是将Content-Length标头设置为字符串的长度,如果所有字符都是一个字节就没问题,因为它们会是使用ascii样式的字符串,但是一旦开始添加具有多个字节的字符(例如中文字符),Content-Length将不再与实际的字节数相匹配。答案只是将字符串转换为utf-8字节,并使用该数组的长度作为Content-Length。