0

我正在尝试通过 youtube api 对 youtube 视频发表评论。我必须向他们的服务器发送一些 XML,但是当我这样做时,它什么也没给我,也没有在视频上评论它。

这是 api 文档的链接!

发布 /feeds/api/videos/VIDEO_ID/comments HTTP/1.1

主办方:gdata.youtube.com

内容类型:application/atom+xml

内容长度:CONTENT_LENGTH

授权:承载ACCESS_TOKEN

GData-版本: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">
<content>This is a crazy video.</content>
</entry>

我非常感谢您的所有帮助,因为我已经坚持了好几天了。谢谢!

这是我的代码: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *requestString = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?><entry xmlns=\"http://www.w3.org/2005/Atom\"xmlns:yt=\"http://gdata.youtube.com/schemas/2007\"><content>%@</content></entry>", [textField text]];

NSData *postData = [requestString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:[NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/videos/4NE7Nmmt0R4/comments"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"key=%@", [defaults objectForKey:@"accessToken"]] forHTTPHeaderField:@"Authorization"];
[request setValue:@"key=AI39si4apF3QyQkXbH_C5IHIClkyP2mio2QJ3JBUUpvPbO2rhch7tpYjMavZgt5QzGaGrHBfom5mNpoUq_ZLRPPa35KO21O9Pw" forHTTPHeaderField:@"X-GData-Key"];
[request setValue:@"2" forHTTPHeaderField:@"GData-Version"];

[request setHTTPBody:postData];

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

[conn start];
4

1 回答 1

0

每当您发出 HTTP 请求时,YouTube API 都会发送一个 HTTP 响应。即使您发出完全无效的 HTTP 请求,您也会收到 HTTP 错误响应。请仔细检查您是否收到任何回复。如果你真的没有,那么我的猜测是你实际上并没有完成你的 HTTP 请求——也许由于某些网络问题,它永远不会到达 API 服务器,或者你计算不CONTENT_LENGTH正确(假设你是尝试手动计算)。

另外,如果您还没有,我建议您使用GData Objective-C 客户端库。

于 2012-11-19T21:03:10.553 回答