2010-10-28 5 views
0

je suis en train de télécharger une vidéo aux favoris sur mon compte, mais il montre Requête invalide Uri et le code d'état = 400Comment télécharger la vidéo à/playlist préférée en utilisant gdata dans l'objectif c

je ne comprends pas comment devrait i formater ma demande

mon code

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]; 

j'ai auth clé jeton et développeur, VIDEO_ID.but ne suis pas sûr de savoir comment passer des données XML dans la demande de poste:

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

NSString * xml_data = contient des données XML sous forme de chaîne

+0

je veux ajouter à votre compte de tube !!! – Swati

Répondre

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

Il y a beaucoup de mal à la demande: il manque un jeton d'authentification ClientLogin ou OAuth, il n'y a pas Content-Length, le XML manque namespaces, et probablement d'autres problèmes.

Avez-vous envisagé d'utiliser le GData Objective-C client library? Utilisation de la bibliothèque, l'ajout d'un favori ressemble à ceci:

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

des erreurs: 1) _Block_object_dispose, 2) _NSConcreteGlobalBlack, 3) _Block_object_assign, 4) _NSConcreteStackBlock – Swati

+0

des avertissements: 1) GDataServiceGoogleYouTube peut ne pas répondre à fetchFeedWithURL 2) GDataServiceGoogleYouTube peut ne pas répondre à fetchEntryByInsertingEntry 3) GDataServiceGoogleYouTube peuvent ne pas répondre à youTubeService – Swati

+0

est là de toute façon pour y parvenir sans utiliser PLBlocks? Si vous ne pouvez pas me suggérer comment éviter les erreurs et les avertissements – Swati