Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新消息{0}上的Youtube API意外部分_Java_Google Api_Google Api Java Client_Youtube Data Api - Fatal编程技术网

Java 更新消息{0}上的Youtube API意外部分

Java 更新消息{0}上的Youtube API意外部分,java,google-api,google-api-java-client,youtube-data-api,Java,Google Api,Google Api Java Client,Youtube Data Api,使用API已经有一段时间了,但遇到了一个问题:“youtube.part”上的400个错误请求。通常不是问题,我认为我可能指定了正确的零件,错误消息将告诉我哪里出了问题,我可以轻松地更改它,但是,错误如下: 400 Bad Request { "code" : 400, "errors" : [ { "domain" : "youtube.part", "location" : "part", "locationType" : "parameter",

使用API已经有一段时间了,但遇到了一个问题:“youtube.part”上的400个错误请求。通常不是问题,我认为我可能指定了正确的零件,错误消息将告诉我哪里出了问题,我可以轻松地更改它,但是,错误如下:

400 Bad Request
{
  "code" : 400,
  "errors" : [ {
     "domain" : "youtube.part",
     "location" : "part",
     "locationType" : "parameter",
     "message" : "{0}",
     "reason" : "unexpectedPart"
  } ],
  "message" : "{0}"
}
通常在
“message”中:“{0}”
它应该告诉您哪部分出错。在这里搜索了一段时间后,我似乎找不到解决方案,现在我只指定
snippet
。在生成更新请求时,我只指定
snippet.title
snippet.tags[]
&
snippet.categoryId

上述内容用于测试环境,请求通过
youtube
范围进行授权,因为我使用它将视频上传到同一个youtube频道

我自己的想法是,也许是:

  • 加载视频后,无法直接更新视频(但可以列出)

  • 我不知怎么遇到了一个bug

对于那些希望重现我得到的东西的人,我在测试中采取了以下步骤:

  • 使用授权凭据设置youtube实例

  • 将随机小文件上传到频道(设置视频标题等)

  • 成功返回后,尝试按id列出视频

  • 使用此id,从youtube检索视频资源

  • 更改标签部分,保留标题等不变

  • 尝试更新并接收该错误


  • 任何帮助都将不胜感激,我真的希望这不是一个显而易见的解决方案:)

    当您的视频更新请求没有列出您发送的视频对象中包含的所有部分时,就会发生这种情况。例如,如果视频对象具有snippet和status(因为您使用了
    video.setSnippet
    video.setStatus
    ),则更新方法中的第一个参数必须列出这两个部分:

    Video ve = listVids[0];
    ve.setStatus(...)
    ve.setSnippet(...)
    ...
    YouTube.Videos.Update updateVideosRequest = youtube.videos().update("snippet, status", ve);
    Video videoResponse = updateVideosRequest.execute();
    
    请注意
    youtube.videos().update
    的第一个参数,它包含status和snippet


    希望这能对您有所帮助。

    当您的视频更新请求没有列出您发送的视频对象中包含的所有部分时,就会发生这种情况。例如,如果视频对象具有snippet和status(因为您使用了
    video.setSnippet
    video.setStatus
    ),则更新方法中的第一个参数必须列出这两个部分:

    Video ve = listVids[0];
    ve.setStatus(...)
    ve.setSnippet(...)
    ...
    YouTube.Videos.Update updateVideosRequest = youtube.videos().update("snippet, status", ve);
    Video videoResponse = updateVideosRequest.execute();
    
    请注意
    youtube.videos().update
    的第一个参数,它包含status和snippet


    希望这能对您有所帮助。

    很抱歉回复太晚,我在别处很忙。因此,您是正确的,错误不是由创建
    Youtube.Videos.Update
    引起的,而是在上一步中。我们首先列出视频以确保其存在,然后使用返回的视频作为更新的基础。列表请求指定了更多部分,因此引发错误。谢谢你的帮助很抱歉回复晚了,我在别处很忙。因此,您是正确的,错误不是由创建
    Youtube.Videos.Update
    引起的,而是在上一步中。我们首先列出视频以确保其存在,然后使用返回的视频作为更新的基础。列表请求指定了更多部分,因此引发错误。谢谢你的帮助