2012-11-19 156 views
0

我正在嘗試通過youtube api對YouTube視頻發表評論。我必須將一些XML發送到他們的服務器,但是當我這樣做時,它不會給我帶來任何回報,也不會在視頻中發表評論。YouTube-Api對視頻的評論

繼承人link to the api documentation

POST /饋送/ API /視頻/ VIDEO_ID /評論HTTP/1.1

主機:gdata.youtube.com

內容類型:應用/原子+ xml的

內容 - 長度:CONTENT_LENGTH

授權:承載ACCESS_TOKEN

的GData-版本:2

X-的GData-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]; 

回答

0

每當你做出一個HTTP請求通過YouTube API將總是發送一個HTTP響應。即使您發出完全無效的HTTP請求,您也會收到HTTP錯誤響應。請仔細檢查,看看你是否得到任何迴應。如果你真的沒有,那麼我的猜測是,你實際上並沒有完成你的HTTP請求 - 可能是因爲某些網絡問題,它從來沒有將它發送到API服務器,或者你沒有正確計算出CONTENT_LENGTH(假設你'試圖用手計算)。

另外,如果你還沒有,我建議使用GData Objective-C client library

+0

感謝您的諮詢。你對目標C熟悉嗎?然後可以看到我的代碼在頂部(因爲我不能在這裏發佈),也許你看到了什麼是錯的。通常它應該工作,因爲當我發送一個刷新令牌發佈請求它的作品。 – user1734282

+0

我在Objective-C中不太流利,但我在響應中提供的信息仍然適用。你最好的辦法是使用官方的客戶端庫,如果你不知道發生了什麼。 –

+0

我的第一次嘗試是使用GData Objective-C庫,但不推薦使用。 – user1734282