Hey everyone.  I'm using the Objective-C version of the API.

I've copied the code to the example project almost exactly, but am
getting this error every time I try to upload a picture:
"failedWithStatus:400 data:Photo data must not be empty.".




Here's my code:

- (void)uploadToPicasa
{

    // make a new entry for the photo
    GDataEntryPhoto *newEntry = [GDataEntryPhoto photoEntry];

    // set a title, description, and timestamp
    [newEntry setTitleWithString:@"Title!"];
    [newEntry setPhotoDescriptionWithString:@"Description!"];
    [newEntry setTimestamp:[GDataPhotoTimestamp timestampWithDate:
[NSDate date]]];

    // attach the NSData and set the MIME type for the photo
    UIImage *earth_image = [UIImage imageNamed:@"earth.jpg"];
    NSData *earth_data = UIImageJPEGRepresentation(earth_image, 1.0);

    [newEntry setPhotoData:earth_data];

    NSString *mimeType = @"image/jpeg";

    [newEntry setPhotoMIMEType:mimeType];

    // the slug is just the upload file's filename
    [newEntry setUploadSlug:@"earth.jpg"];

    // make service tickets call back into our upload progress
selector
    GDataServiceGooglePhotos *service = [self googlePhotosService];

    SEL progressSel =
@selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
    [service setServiceUploadProgressSelector:progressSel];

    // Get URL for Picasa
    NSURL *uploadURL = [GDataServiceGooglePhotos
photoFeedURLForUserID:@"CORRECT_USERNAME"
 
albumID:nil
 
albumName:nil
 
photoID:nil
 
kind:nil
 
access:nil];

    // insert the entry into the album feed
    GDataServiceTicket *ticket;
    ticket = [service fetchEntryByInsertingEntry:newEntry
                                      forFeedURL:uploadURL
                                        delegate:self
 
didFinishSelector:@selector(addPhotoTicket:finishedWithEntry:error:)];

    // no need for future tickets to monitor progress
    [service setServiceUploadProgressSelector:nil];
}

// progress callback
- (void)ticket:(GDataServiceTicket *)ticket
hasDeliveredByteCount:(unsigned long long)numberOfBytesRead
ofTotalByteCount:(unsigned long long)dataLength {

    NSLog([NSString stringWithFormat:@"%d", numberOfBytesRead /
dataLength]);
}

// photo add callback
- (void)addPhotoTicket:(GDataServiceTicket *)ticket
     finishedWithEntry:(GDataEntryPhoto *)photoEntry
                 error:(NSError *)error {

    if (error == nil) {
        NSLog(@"SHOULD BE UPLOADED MAYBE");
    } else {
        NSLog(@"THERE WAS AN ERROR");
    }
}

- (GDataServiceGooglePhotos *)googlePhotosService {

    static GDataServiceGooglePhotos* service = nil;

    if (!service) {
        service = [[GDataServiceGooglePhotos alloc] init];

        [service setShouldCacheResponseData:YES];
        [service setServiceShouldFollowNextLinks:YES];
    }

    // update the username/password each time the service is requested
    NSString *username = @"CORRECT_USERNAME";
    NSString *password = @"CORRECT_PASSWORD";
    if ([username length] && [password length]) {
        [service setUserCredentialsWithUsername:username
                                       password:password];
    } else {
        [service setUserCredentialsWithUsername:nil
                                       password:nil];
    }

    return service;
}



I used a breakpoint to confirm that NSData is not nil, and is the
image in question, so I'm not sure what "failedWithStatus:400
data:Photo data must not be empty." could mean.  Please help!

-- 
You received this message because you are subscribed to the Google Groups 
"Google Picasa Web Albums API" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-picasa-data-api?hl=en.

Reply via email to