我正在通过java项目中的关键字运行搜索,与示例中的完全相同 -
https://developers.google.com/youtube/v3/code_samples/java#search_by_keyword
它工作得很好,但是当我向示例添加PublishedAfter选项时 search.setPublishedAfter(myDateTime);
它返回错误400消息“:”错误请求“
YouTube.Search.List search = youtube.search().list("id,snippet");
String apiKey = properties.getProperty("youtube.apikey");
search.setKey(apiKey);
search.setQ(queryTerm);
search.setPublishedAfter(myDateTime) // the code works when removing this line
search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");
search.setMaxResults(NUMBER_OF_VIDEOS_RETURNED);
SearchListResponse searchResponse = search.execute();
List<SearchResult> searchResultList = searchResponse.getItems();
我想使用setPublishedAfter选项
请帮助 感谢
答案 0 :(得分:0)
Youtube api v3说“ publishedAfter参数表示API响应应该只包含在指定时间后创建的资源。该值是RFC 3339格式的日期时间值(1970-01-01T00:00: 00Z)“因此,您的问题最有可能是因为您的日期格式。看看你的“myDateTime”对象。错误应该接近它。另请查看我的代码:
Calendar cal = Calendar.getInstance();
Date currentDateOfAmerica=cal.getTime();
cal.set(12, cal.get(12)-1);
Date dateOneMinuteBefore=cal.getTime();
DateTime dt1 = new DateTime(dateOneMinuteBefore);
DateTime dt2 = new DateTime(currentDateOfAmerica);
search.setPublishedAfter(dt1);
search.setPublishedBefore(dt2);
此代码段设置从现在到一分钟之前上传的搜索视频
答案 1 :(得分:0)
你遇到了字段部分的问题。最有可能发表在后面的内容未在您建议的字段中描述。
只需注释setFields
即可。