我正在尝试通过api订阅youtube频道。因为我对xml不好,所以需要你的帮助。 文档的原始链接:https://developers.google.com/youtube/2.0/developers_guide_protocol_subscriptions 或
简而言之,这是在youtube文档中写的内容:
添加订阅
要创建订阅,您需要发送POST请求,以识别正在创建订阅的经过身份验证的用户的YouTube用户名。请求的主体是一个包含以下元素的XML条目:
<category>
标记用于标识用户正在创建的订阅类型。将标签的term属性值设置为user以指示用户正在订阅其他用户的活动(上传视频,评级,将视频标记为收藏等),或将term属性值设置为channel以指示用户正在订阅一个频道。
<yt:username>
标记用于标识正在订阅其活动的频道或用户。
订阅频道
POST /feeds/api/users/default/subscriptions HTTP/1.1
Host: gdata.youtube.com
Content-Type: application/atom+xml
Content-Length: CONTENT_LENGTH
Authorization: Bearer ACCESS_TOKEN
GData-Version: 2
X-GData-Key: key=DEVELOPER_KEY
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:yt="http://gdata.youtube.com/schemas/2007">
<category scheme="http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat"
term="channel"/>
<yt:username>GoogleDevelopers</yt:username>
</entry>
我的问题
我如何编写帖子请求?我尝试用简单的html表单方法发布。但它没有奏效。我收到以下错误。
Content-Type application/x-www-form-urlencoded is not a valid input type.
答案 0 :(得分:2)
由于您使用的是HTML表单帖子,因此将内容类型设置为application/x-www-form-urlencoded
,但所需的内容类型为application/atom+xml
要做你想做的事,你需要使用javascript发布(为了简单起见,我推荐使用jQuery)。
var data = //XML Data for post
$.ajax({
url://Youtube Subscribe Post URL,
type:"POST",
data:data,
Authorization: //ACCESS_TOKEN,
GData-Version: '2',
X-GData-Key: 'key=' //DEVELOPER_KEY,
contentType:"application/atom+xml",
dataType:"xml",
success: function(){
alert('subscribd');
}
});
我还没有测试过,但你应该明白这个想法。确保将评论替换为应用的实际值。
请注意,这可能会遇到跨域问题。