Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
如何在YouTube API Java中正确应用yt:accessControl_Java_Xml_Permissions_Youtube Api - Fatal编程技术网

如何在YouTube API Java中正确应用yt:accessControl

如何在YouTube API Java中正确应用yt:accessControl,java,xml,permissions,youtube-api,Java,Xml,Permissions,Youtube Api,我在YouTube上上传了一段视频,我想更改yt:accessControls(特别是评论调节)。我已经查看了YouTube API参考,但似乎无法正确更新它。这是我的密码: //Strings declared beforehand: appName, developerId, username, password, and vidId. YouTubeService service = new YouTubeService(appName, developerId); service.set

我在YouTube上上传了一段视频,我想更改yt:accessControls(特别是评论调节)。我已经查看了YouTube API参考,但似乎无法正确更新它。这是我的密码:

//Strings declared beforehand: appName, developerId, username, password, and vidId.
YouTubeService service = new YouTubeService(appName, developerId);
service.setUserCredentials(username, password);

String videoEntryUrl = "http://gdata.youtube.com/feeds/api/users/default/uploads/" + vidId;
VideoEntry createdEntry = service.getEntry(new URL(videoEntryUrl), VideoEntry.class);

String originalXMLBlob = createdEntry.getXmlBlob().getBlob();

String atomXml = "<?xml version='1.0'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' gd:fields='yt:accessControl' xmlns:yt='http://gdata.youtube.com/schemas/2007'><yt:accessControl action='comment' permission='moderated'/></entry>";

GDataRequest request = service.createPatchRequest(new URL(createdEntry.getEditLink().getHref()));
request.getRequestStream().write(atomXml.getBytes("UTF-8"));
request.execute();
createdEntry = service.parseResponseData(request, VideoEntry.class);

String newXMLBlob = createdEntry.getXmlBlob().getBlob().substring(49);
//The substring(49) is because after you do a service.parseResponseData... it attaches a timestamp to the xmlBlob. To properly compare whether these are the same in the printlns I substring it.

System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(originalXMLBlob);
System.out.println(newXMLBlob);
createdEntry.update();
createdEntry.update();

newXMLBlob = createdEntry.getXmlBlob().getBlob().substring(49);
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(originalXMLBlob);
System.out.println(newXMLBlob);
System.out.println("Done");
//预先声明的字符串:appName、developerId、用户名、密码和vidId。
YouTube服务=新的YouTube服务(appName,developerId);
service.setUserCredentials(用户名、密码);
字符串videoEntryUrl=”http://gdata.youtube.com/feeds/api/users/default/uploads/“+vidId;
VideoEntry CreateEntry=service.getEntry(新URL(videoEntryUrl),VideoEntry.class);
String originalXMLBlob=createdEntry.getXmlBlob().getBlob();
字符串atomXml=“”;
Gdata请求=service.createPatchRequest(新URL(createdEntry.getEditLink().getHref());
request.getRequestStream().write(atomXml.getBytes(“UTF-8”);
request.execute();
createdEntry=service.parseResponseData(请求,VideoEntry.class);
字符串newXMLBlob=createdEntry.getXmlBlob().getBlob().substring(49);
//子字符串(49)是因为在执行服务后。parseResponseData。。。它将时间戳附加到xmlBlob。要正确比较printlns中的这些是否相同,我将其子串。
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(原始xmlblob);
System.out.println(newXMLBlob);
createdEntry.update();
createdEntry.update();
newXMLBlob=createdEntry.getXmlBlob().getBlob().substring(49);
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(原始xmlblob);
System.out.println(newXMLBlob);
系统输出打印项次(“完成”);
输出为:

false
<yt:accessControl permission='allowed' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
<yt:accessControl permission='moderated' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
false
<yt:accessControl permission='allowed' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
<yt:accessControl permission='moderated' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
Done
false
假的
多恩
重要的是从头到尾没有任何变化。你可以看到我甚至试着做
createdEntry.update()但这也不起作用。任何帮助都将不胜感激!谢谢

哦,还有最后一件事。我希望我的atomXml能够设置对多种内容的访问控制(视频响应、分级等)。我猜你只是添加了更多的
yt:accessControl
标签,但是在回答这个问题时,如果你对此有任何建议,我将不胜感激。再次感谢


编辑:删除了xml中url中的空格。这导致输出发生了变化(也更新了),这更有意义,但这不是理想的解决方案。

如果我最初没有在xml中提出空间问题,我就不必发布这个问题。事实证明,上传视频后无法立即更新yt:accessControl。因此,我将保存ID并上传它们,当它们全部完成后,我将更新每个ID上的yt:accessControl。希望这对后来的人有帮助


哦,顺便说一下,我很确定你可以一次提交几个yt:accessControls。快乐编码

问题解决了,不过我只有34个声望点,所以我稍后会发布答案。