【问题标题】:YouTube Upload v3 - 400 Bad RequestYouTube 上传 v3 - 400 错误请求
【发布时间】:2014-06-06 06:03:57
【问题描述】:

我注意到在尝试通过以下方式上传视频时,我遇到了很多 HTTP 400 失败: https://developers.google.com/youtube/v3/docs/videos/insert

我正在使用来自 Google 的 Go SDK: code.google.com/p/google-api-go-client

上传失败的共同点是,在视频 sn-p 数据(标题/描述)的某处,有 <, > 这样的字符。如果我删除冲突字符,视频上传正常。

我似乎无法在文档中找到它,但我是否需要进行某种清理? 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
}

【问题讨论】:

    标签: go youtube youtube-api google-api-go-client


    【解决方案1】:

    一个问题是:

    这些是来自 Google Discovery 的自动生成的 Go 库 可用“新样式”Google 的服务 JSON 描述文件 API。

    公告电子邮件: http://groups.google.com/group/golang-nuts/browse_thread/thread/6c7281450be9a21e

    状态:相对于其他 Google API 客户端,这个库是 标记为阿尔法。某些高级功能可能无法使用。请提交错误 如果发现任何问题。

    由于它们是从 JSON 服务定义自动生成的,因此它们可能错过了适当的翻译。从 API 文档中,假设您使用的是 http 协议,视频信息将作为 JSON blob 发送。

    Go 会为你转换特殊字符。所以 等成为 JSON 有效的 unicode 转义序列。 Google 可能不喜欢转义序列,因此您可能想尝试发送文字字符。但我真的怀疑这是问题所在。

    另外,由于您提到 youtube 不会让您输入 HTML,所以如果您正在这样做,或者看起来像 html,这可能是您的无效字符错误的原因。您需要清理任何看起来像 html 的内容。

    看到这篇文章:

    https://groups.google.com/forum/#!topic/youtube-api-gdata/EcYPPlHjllY

    这表明 golang 生成了 unicode 转义序列:

    http://play.golang.org/p/hv2h7PA0tr

    【讨论】:

    • 我没有添加 HTML,只是有一个像 &gt; 这样的字符就会失败。如果我把这些字符去掉,上下文可能会丢失。我宁愿弄清楚它为什么会被拒绝,也不愿删除一些内容。
    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多