2012-03-13 19 views
3

私はiPhoneのアプリからFlickrに写真をアップロードするためにObjectiveFlickrライブラリを使用しています。アプリを承認して一般的なリクエストを行うことはできますが、写真をアップロードしようとするとエラーが発生します。アップロードする写真は、AVFoundationを使用してキャプチャした画像です。ObjectiveFlickr写真アップロードエラー

UIImage *image = [[UIImage alloc] initWithData:imageData]; 
if ([[AppDelegate sharedDelegate].apiContext.OAuthToken length]) { 
        NSData *uploadData = UIImageJPEGRepresentation(image, 1); 

        if (!flickrRequest) { 
         flickrRequest = [[OFFlickrAPIRequest alloc] initWithAPIContext:[AppDelegate sharedDelegate].apiContext]; 
         flickrRequest.delegate = self; 
         flickrRequest.requestTimeoutInterval = 60.0; 
        } 

        [flickrRequest uploadImageStream:[NSInputStream inputStreamWithData:uploadData] suggestedFilename:@"Test" MIMEType:@"image/jpeg" arguments:[NSDictionary dictionaryWithObjectsAndKeys:@"0", @"is_public", nil]]; 
        [UIApplication sharedApplication].idleTimerDisabled = YES; 

        NSLog(@"Can upload photo"); 

flickrRequestオブジェクトが定義されており、@propertyは、上記のコードに関連する.hファイルでD」:ここに関連するコードです。私は、デバイス上でプロジェクトを実行すると

- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest imageUploadSentBytes:(NSUInteger)inSentBytes totalBytes:(NSUInteger)inTotalBytes { 
    NSLog(@"Success"); 
} 

- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didCompleteWithResponse:(NSDictionary *)inResponseDictionary { 
    NSLog(@"%s %@ %@", __PRETTY_FUNCTION__, inRequest.sessionInfo, inResponseDictionary); 
} 

- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didFailWithError:(NSError *)inError { 
    NSLog(@"%s %@ %@", __PRETTY_FUNCTION__, inRequest.sessionInfo, inError); 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[inError description] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
    [alert show]; 
} 

コンソールを示しています:以下のように

OFFlickrRequestDelegate方法

がある

Can upload photo 
Success 
Success 
Success 
Success 
flickrAPIRequest:didFailWithError:(null) Error Domain=org.lukhnos.ObjectiveFlickr Code=2147418115 "The operation couldn’t be completed. (org.lukhnos.ObjectiveFlickr error 2147418115.)" 

APIのドキュメント、「エラー2147418115」を検索すると定義されます"OFFlickrAPIRequestFaultyXMLResponseError"私はこれがどういう意味であるかは分かりません。また、奇妙な - 私は1つの写真をアップロードしようとしているときに "成功"は4回表示されます。

ObjectiveFlickrの "Snap and Run"を利用したサンプルアプリケーションは、私がテストしているのと同じデバイス上で写真をうまくアップロードします。私のアプリとSnap and Runのコードを比較すると、写真がアップロードされない原因となる大きな違いはありません。

ご協力いただければ幸いです。

答えて

1

これは奇妙です。 OFFlickrAPIRequestFaultyXMLResponseErrorは、返されたデータをXMLとして解析できないことを意味します。サンプルアプリSnapAndRunが正しく実行され、あなたがいない場合、私は右のラインNSString *stat = [rsp objectForKey:@"stat"];後、ObjectiveFlickr.mに1行を追加します。お勧め:

NSString *dataString = [[[NSString alloc] initWithData:[request receivedData] encoding:NSUTF8StringEncoding] autorelease]; 
NSLog(@"received response: %@", dataString); 

これは、それはだ場合は、例えば(うまくいかないものを見つけるのに役立つことがありサーバー側の問題、またはライブラリが見逃した応答形式)を示します。

1

このエラーが発生したとき、私はCharlesを使って何が起こっていたのかを確認しました。 Flickrは署名が無効であると言ってエラーを返送していました。私の要求を見ると、私はキーと値の順序を逆転させていることが分かりました(つまり、私の鍵の1つに空白があり、これによって署名エラーが発生した可能性があります)。