Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 youTube数据API V3-使用PublishDafter时搜索返回错误400_Java_Android_Youtube Api_Android Youtube Api - Fatal编程技术网

Java youTube数据API V3-使用PublishDafter时搜索返回错误400

Java youTube数据API V3-使用PublishDafter时搜索返回错误400,java,android,youtube-api,android-youtube-api,Java,Android,Youtube Api,Android Youtube Api,我正在运行一个java项目中的关键字搜索,与示例中完全相同- 它工作得很好,但是当我向示例中添加PublishedAfter选项时 search.setPublishedAfter(myDateTime) 它返回错误400消息:“错误请求” YouTube.Search.List Search=YouTube.Search().List(“id,snippet”); 字符串apiKey=properties.getProperty(“youtube.apiKey”); search.setKe

我正在运行一个java项目中的关键字搜索,与示例中完全相同-

它工作得很好,但是当我向示例中添加PublishedAfter选项时 search.setPublishedAfter(myDateTime)

它返回错误400消息:“错误请求”

YouTube.Search.List Search=YouTube.Search().List(“id,snippet”);
字符串apiKey=properties.getProperty(“youtube.apiKey”);
search.setKey(apiKey);
search.setQ(queryTerm);
search.setPublishedAfter(myDateTime)//删除此行时代码会起作用
search.setFields(“项(id/kind、id/videoId、片段/标题、片段/缩略图/默认值/url)”;
search.setMaxResults(返回的视频数量);
SearchListResponse searchResponse=search.execute();
List searchResultList=searchResponse.getItems();
我想使用setPublishedAfter选项

请帮忙 感谢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);

此代码段设置了从现在到一分钟前上传的搜索视频

您的“字段”部分有问题。您建议的“字段”部分中很可能没有描述发布后的内容


只需注释掉设置字段就可以了。

这就是我创建myDateTime:DateTime myDateTime=new DateTime的方法(System.currentTimeMillis()-1000*60*60);您看到了问题吗?我现在看不到问题。请根据我的代码更改代码。如果错误仍然存在,可能还有另一个问题。但是应该是格式尝试从列表中取出id。YouTube.Search.list Search=YouTube.Search().list(“代码片段”);问题是,当API希望字符正常时,客户端正在编码日期字符串,例如publishedAfter=2014-05-28T14%3A10%3A40%2B00%3A00Z是它正在发送的,但是如果您使用API链接,这会起作用//www.googleapis.com/youtube/v3/search?channelId=UCZaT_X_mc0BI-djXOlfhqWQ&maxResults=50&videoSyndicated=true&part=id%2Csnippet&key=YOUR\u API\u key&alt=json&type=video&order=date&publishedAfter=1970-01-01T00:00:00Z我不确定客户端为什么要这样做。顺便说一句,我正在使用python。啊,我注意到我的datetime正在发送+00:00小时和分钟偏移量信息,我认为需要删除这些信息。时间组件应该是T00:00:00Z。您是否使用了e forMine参数?如果我在收到400错误后使用forMine和Published(即使使用YouTube API浏览器,请参阅“请求包含无效的搜索筛选器和/或限制组合”)。另请参阅不使用forMine。为了解决此问题,我使用了简单的rest API而不是java API。
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);