使用youtube api批量请求 - 从多个渠道获取最新视频信息

时间:2012-12-06 07:30:44

标签: java android youtube-api http-post

我有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。

有人知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

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

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

或者,如果您有一些排序服务器端流程,有兴趣了解新视频何时上传到指定渠道,您可以使用PubSubHubbubSUP来更有效地处理该方案。因为你的问题是用android标记的,所以我假设你关心这个客户端。