我注意到在尝试通过以下方式上传视频时,我得到了很多HTTP 400
个傻瓜:
https://developers.google.com/youtube/v3/docs/videos/insert
我正在使用Google的Go SDK: code.google.com/p/google-api-go-client
失败上传的共同点是视频片段数据(标题/说明)中的某个地方有<, >
等字符。如果我删除了有冲突的字符,视频上传就可以了。
我似乎无法在文档中找到它,但我是否需要进行某种消毒? HTML转义?删除^A-Za-z0-9
的所有内容?那么<
的非html使用情况如<3
?那个unicode字符怎么样?我很困惑。
编辑:
要回答我的问题,我写这篇文章是为了解决Google仇恨>
,<
字符的问题。我只需用看起来相似的不同UNICODE字符替换它们。
// < and > need to be stripped out, or the upload will throw 400 error
// https://developers.google.com/youtube/2.0/reference#youtube_data_api_tag_media:description
sanitize := func(val string) string {
replacements := map[string]string{
"<": "≺",
">": "≻",
}
for k, v := range replacements {
val = strings.Replace(val, k, v, -1)
}
return val
}
答案 0 :(得分:1)
一个问题是:
这些是Google Discovery自动生成的Go库 服务的可用“新风格”Google的JSON描述文件 的API。
公告电邮: http://groups.google.com/group/golang-nuts/browse_thread/thread/6c7281450be9a21e
状态:相对于其他Google API客户端,此库是 标记为alpha。某些高级功能可能无效。请提交错误 如果发现任何问题。
由于它们是从JSON服务定义自动生成的,因此可能错过了相应的转换。从API文档中,假设您使用的是http协议,视频信息将作为JSON blob发送。
Go将为您转换特殊字符。因此&lt;&gt;等会成为JSON有效的unicode转义序列。 Google可能不喜欢转义序列,因此您可能想尝试发送文字字符。但我真的怀疑这是问题。
此外,因为你提到&lt;&gt; youtube不会让你输入HTML,所以如果你正在做的事情,或看起来像html的东西,这可能是你的无效字符错误的原因。您将需要清理任何看起来像HTML的内容。
见这篇文章:
https://groups.google.com/forum/#!topic/youtube-api-gdata/EcYPPlHjllY
这表明golang生成unicode转义序列: