GData Picasa Фотоальбом iPhone - PullRequest
0 голосов
/ 19 июля 2011

Я надеялся, что кто-нибудь сможет мне помочь с этой проблемой.Я пытаюсь получить доступ к Веб-альбому Picasa из приложения iphone.Ранее я использовал GData с Календарем Google и получал события и данные, связанные с ними ранее, поэтому настроил свои методы аналогичным образом.Однако я получаю сообщение об ошибке, которое говорит мне следующее

serviceBase:<GDataServiceGooglePhotos: 0x4d4e6d0> objectFetcher:<GDataHTTPFetcher: 0xbaa35c0> failedWithStatus:400 data:Too many results requested

Мне кажется, что я сузил проблему, связанную с тем, что билет Я использую в следующей строке

ticket = [service fetchFeedWithURL:[NSURL URLWithString:kGDataGooglePhotosAllFeed]
                          delegate:self
                 didFinishSelector:@selector(photosListTicket:finishedWithFeed:error:)];

Я, однако, не могу обойти эту проблему.У кого-нибудь есть предложение обойти эту проблему.Я делаю что-то неправильно?

Мой полный код для поиска картинок показан ниже.Везде, где написано picAlbum, это предопределенный NSArray для хранения информации.

- (GDataServiceGooglePhotos *)photoService {

    static GDataServiceGooglePhotos* service = nil;
    if (!service) {
        service = [[GDataServiceGooglePhotos alloc] init];
        [service setShouldCacheDatedData:YES];
        [service setServiceShouldFollowNextLinks:YES];
    }

    [service setUserCredentialsWithUsername:@"username"
                                   password:@"password"];
    return service;
}


-(void)loadGooglePhotos {
    [self fetchAllPhotos];
}

-(void)fetchAllPhotos {
    NSLog(@"In fetchAllPhotos");
    GDataServiceGooglePhotos *service = [self photoService];
    GDataServiceTicket *ticket;

    ticket = [service fetchFeedWithURL:[NSURL URLWithString:kGDataGooglePhotosKindAlbum]
                              delegate:self
                     didFinishSelector:@selector(photosListTicket:finishedWithFeed:error:)];
}

- (void)photosListTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedPhotoAlbum *)feed error:(NSError *)error {

    NSLog(@"In photosListTicket");
    NSArray *photos = [feed entries];
    if ([photos count] != 0){
        self.picAlbum = [photos objectAtIndex:0];
        NSLog(@"fetching photos");
        [self fetchPhotos];
    }
    else {
        NSLog(@"User has no photos...");
    }
}

- (void)fetchPhotos {

    NSLog(@"In fetchPhotos");
    if (self.picAlbum) {
        NSURL *feedURL = [[self.picAlbum alternateLink] URL];
        if (feedURL) {
            NSLog(feedURL);
            GDataQueryGooglePhotos *query = [GDataQueryGooglePhotos photoQueryWithFeedURL:feedURL];
            [query setMaxResults:1000];
            GDataServiceGooglePhotos *service = [self photoService];
            GDataServiceTicket *ticket;
            ticket = [service fetchFeedWithQuery:query delegate:self didFinishSelector:@selector(photosEventsTicket:finishedWithFeed:error:)];
        }
    }
}

- (void)photosEventsTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedPhotoAlbum *)feed error:(NSError *)error {

    NSLog(@"In photosEventsTicket");
    NSArray *photos = [feed entries];
    NSLog([NSString stringWithFormat:@"%i",[photos count]]);
}

Заранее благодарим за любую информацию или помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 20 июля 2011

Если сервер говорит «Запрошено слишком много результатов», это признак того, что параметр запроса max результатов слишком велик.

Выборки в фрагменте кода не работают.Ни kGDataGooglePhotosKindAlbum, ни альтернативная ссылка альбома не будут URL-адресами для каналов.

...