2010-10-28 60 views
0

我试图上传到喜爱的视频在我的帐户,但它显示无效请求的URI和状态码= 400如何上传视频到目标C使用GDATA最爱/播放列表

我不明白应该如何格式化我的请求

我的代码

NSURL *url = [NSURL URLWithString: 
       http://gdata.youtube.com/feeds/api/users/username/favorite]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request setPostValue:@"gdata.youtube.com" forKey:@"Host"]; 
[request setPostValue:@"application/atom+xml" forKey:@"Content-Type"]; 
[request setPostValue:@"CONTENT_LENGTH" forKey:@"Content-Length"]; 
[request setPostValue:@"" forKey:@"AuthSubToken"]; 
[request setPostValue:@"2" forKey:@"GData-Version"]; 
[request setPostValue:developer_key forKey:@"X-GData-Key"]; 
[request setPostValue:xml_data forKey:@"API_XML_Request"]; 

[request setDelegate:self]; 
[request setDidFailSelector:@selector(requestFailed:)]; 
[request setDidFinishSelector:@selector(gotTheResponse:)]; 
[[networkQueue go]; 

我有身份验证令牌和开发重点,VIDEO_ID.but不知道如何通过在POST请求的XML数据:

<?xml version="1.0" encoding="UTF-8"?> 
<entry xmlns="http://www.w3.org/2005/Atom"> 
    <id>VIDEO_ID</id> 
</entry> 

的NSString * xml_data =包含字符串形式的XML数据

+0

我想添加到您管帐! – Swati 2010-10-28 06:58:26

回答

2
NSString *developer_key; 

GDataEntryYouTubeFavorite *favorite = [GDataEntryYouTubeFavorite entry]; 

[favorite setIdentifier:video_id]; 

service = [[GDataServiceGoogleYouTube alloc] init]; 

[service setUserCredentialsWithUsername:user_name password:user_pass]; 

[service setYouTubeDeveloperKey:developer_key]; 

NSURL *feedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:@"default" 
           userFeedID:kGDataYouTubeUserFeedIDFavorites]; 

[service fetchEntryByInsertingEntry:favorite forFeedURL:feedURL 
          delegate:self 
       didFinishSelector:@selector(subscribeTicket:finishedWithEntry:)]; 
0

有很多错误的要求:它缺乏的ClientLogin或OAuth认证令牌,有没有内容长度,将XML缺少命名空间和可能其他问题。

您是否考虑过使用GData Objective-C client library?使用该库,添加喜欢的是这样的:

NSURL *favoritesFeedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:username 
                   userFeedID:kGDataYouTubeUserFeedIDFavorites]; 
    GDataServiceGoogleYouTube *service = [self youTubeService]; 
    [service fetchFeedWithURL:favoritesFeedURL 
      completionHandler:^(GDataServiceTicket *ticket, GDataFeedBase *feed, NSError *error) { 

      if (error == nil) { 
       // add the new favorite 
       GDataEntryYouTubeVideo *entry = [GDataEntryYouTubeVideo videoEntry]; 
       [entry setIdentifier:videoID]; 

       [service fetchEntryByInsertingEntry:entry 
             forFeedURL:[[feed postLink] URL] 
           completionHandler:^(GDataServiceTicket *ticket, GDataEntryBase *entry, NSError *error) { 

            if (error == nil) { 
            // succeeded 
            } else { 
            NSLog(@"Error inserting new favorite: %@", error); 
            } 
           }]; 

      } else { 
       NSLog(@"Error fetching favorites feed: %@", error); 
      } 

      }]; 
+0

一些错误:1)_Block_object_dispose,2)_NSConcreteGlobalBlack,3)_Block_object_assign,4)_NSConcreteStackBlock – Swati 2010-11-08 04:34:45

+0

一些警告:1)GDataServiceGoogleYouTube可能不fetchFeedWithURL 2响应)GDataServiceGoogleYouTube可能不fetchEntryByInsertingEntry 3响应)GDataServiceGoogleYouTube可能不youTubeService – Swati 2010-11-08 06:10:53

+0

响应是有任何方式来实现这一点,而不使用PLBlocks?如果不是,你可以建议我如何避免错误和警告 – Swati 2010-11-08 09:51:51