为什么我不能使用RESTAPI向Firebase发送一些UTF-8字符? 我在C++中使用REST API创建了一个简单的FixBasic评论存储系统。我最近遇到了一个问题,如果加入汉字,评论将无法上传。下面是一个失败的数据包示例: 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 } }

为什么我不能使用RESTAPI向Firebase发送一些UTF-8字符? 我在C++中使用REST API创建了一个简单的FixBasic评论存储系统。我最近遇到了一个问题,如果加入汉字,评论将无法上传。下面是一个失败的数据包示例: 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 } },rest,utf-8,firebase,Rest,Utf 8,Firebase,当我尝试发送此数据包时,会出现两个不同的错误 最初,我得到Http代码400,错误为:error:Invalid data;无法分析JSON对象、数组或值。可能您在密钥名中使用了无效字符 当我在重新启动程序之前发出任何后续请求时,我得到Http代码405,错误为:error:Unsupported request type 我的要求有问题吗?我可以通过仪表板或使用Vulcan将相同的数据放入Firebase。有人能提出解决方案吗?好吧,为了子孙后代,问题很简单,我使用的一个插件将内容长度标题设置

当我尝试发送此数据包时,会出现两个不同的错误

最初,我得到Http代码400,错误为:error:Invalid data;无法分析JSON对象、数组或值。可能您在密钥名中使用了无效字符

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


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

好吧,为了子孙后代,问题很简单,我使用的一个插件将内容长度标题设置为字符串的长度,如果所有字符都是一个字节就可以了,就像ascii样式的字符串一样,但一旦开始添加多个字节的字符,例如汉字,内容长度将不再与实际字节数匹配。答案是简单地把字符串转换成UTF-8字节,并使用数组的长度作为内容长度。

我想你需要向我们展示你的代码,特别是因为你正在使用C++。不幸的是,事情变得有点棘手。我是在虚幻引擎4中使用内置的HttpRequest系统来完成这项工作的,从我所知,它使用的是curl库。因此,代码分散在一堆不同的类中,其中很多我无法更改。这可能是我能找到的最相关的代码,但我不知道这会有多大帮助`