【发布时间】:2021-05-30 08:35:30
【问题描述】:
我正在尝试学习使用 Java 中的 guthub api。 我创建了一个简单的程序,可以读取和提交文件的新版本。 我已经针对许多短长度的文本文件对此进行了测试,并且我认为我正确使用了 mime base64。 我现在正在尝试上传一个更大的文件,大约 5 MB。 这意味着正文中的 JSON 看起来像这样:
{
"owner": "example42gdrive",
"repo": "Example1",
"message": "FileSystem 42 module on github",
"content": "rO0ABXNyABdpcy5MNDIuZ2V ...5MB of JS string here... ABGluZm90AB5MfqIDcQB+AAU=",
"sha":"a7ef93d3eb50383028578cb916b70060067d9c8a"
}
然后我会回复
400
{"message":"Problems parsing JSON","documentation_url":"https://docs.github.com/rest/reference/repos#create-or-update-file-contents"}
注意事项:
-
相同的代码适用于较小的内容
-
java Base64.getMimeEncoder() 将在结果中插入一些 \n 以将其分隔成行。我正在删除这些换行符以获得有效的 JS 字符串。
有谁知道我做错了什么或者我应该怎么做?
编辑:经过一些实验,问题接缝在 \n: 如果我生成的 base64 字符串足够短,以至于 java Base64.getMimeEncoder() 不会插入任何 \n,那么一切都很好。当然,带有\n的字符串不能通过简单的前后加(")来'stringyfied',所以我尝试了
- 删除\n,无效 -> 解析 JSON 时出现问题
- 用 \n 替换 \n(以便解析器将它们视为字符串中的 \n)-> 解析 JSON 时出现问题
- 将 \n 替换为 \\n(以便解析器将它们视为 \n,如果在某种程度上存在两个级别的转义服务器端,这可能会有所帮助 ->解析 JSON 的问题
- 用空格替换 \n ->解析 JSON 的问题
在https://en.wikipedia.org/wiki/Base64 维基百科明确指出
(newlines and white spaces may be present anywhere but are to be ignored
on decoding)
我开始认为有些东西我不明白,而且很明显,github api 没有提到它
【问题讨论】:
标签: json github-api