6

我有 10 个我喜欢的 youtube 频道,我想获取每个频道的最新视频信息。现在我正在做 10 个不同的电话,比如这个:

http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?v=2&alt=jsonc&start-index=1&max-results=1

我想通过使用批处理请求将这 10 个调用替换为单个调用。

我试过这个:

String xml = "<feed xmlns='http://www.w3.org/2005/Atom' xmlns:batch='http://schemas.google.com/gdata/batch'>" +
             "    <batch:operation type='query'/>" +
             "    <entry>" +
             "        <id>http://gdata.youtube.com/feeds/api/videos/VIDEO_ID_1</id>" +
             "    </entry>" +
             "    <entry>" +
             "        <id>http://gdata.youtube.com/feeds/api/videos/VIDEO_ID_2</id>" +
             "    </entry>" +
             ...
             "    <entry>" +
             "        <id>http://gdata.youtube.com/feeds/api/videos/VIDEO_ID_10</id>" +
             "    </entry>" +
             "</feed>";

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("https://gdata.youtube.com/feeds/api/videos/batch?v=2");
StringEntity se = new StringEntity(xml);
se.setContentType("text/xml");
httpPost.setEntity(se);
HttpResponse response = httpClient.execute(httpPost);

我在 HTTPResponse 对象中获得了一个包含有用数据的 XML。

但是如果我想获取最新的 10 个视频信息,我不会知道 videoId。

有谁知道如何做到这一点?

4

1 回答 1

2

您不能发出http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?v=2在请求正文中包含 10 个不同 URL 的批处理请求。

您需要请求http://gdata.youtube.com/feeds/api/users/USERNAME/uploads?v=2&max-results=110 次,每次请求一次USERNAME

或者,如果您有某种服务器端进程有兴趣了解新视频何时上传到给定频道,您可以使用PubSubHubbubSUP更有效地处理该场景。因为你的问题被标记为android我假设你关心做这个客户端,不过。

于 2012-12-06T19:58:14.483 回答