我使用OAuthConsumer庫由喬恩·克羅斯比(google code link)OAuthConsumer - 發送圖像服務器OAMutableURLRequest
我已經成功地建立了我的項目有訪問&請求令牌/密使與基本授權HTTP請求服務器(GET)。但現在我需要創建一個呼叫,上傳圖像到服務器...(POST)
據我發現,我需要自己定義整個httpBody(糾正我,如果我錯了)。我發現一些示例代碼將數據附加到httpBody,但我完全不知道我在做什麼。我這樣做是這樣的:
// create url request
urlRequest = [[[OAMutableURLRequest alloc] initWithURL:urlToServerGoesHere
consumer:authentication.consumer
token:authentication.token
realm:nil
signatureProvider:nil] autorelease];
// apply http method on request
[urlRequest setHTTPMethod:@"POST"];
// define boundary and content-type of file in header of request
NSString* boundary = @"----IMAGE_UPLOAD";
NSString* contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[urlRequest setValue:contentType forHTTPHeaderField:@"Content-Type"];
// Create entire body
NSMutableData* body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"image\"; filename=\"upload.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[urlRequest setHTTPBody:body];
當在代碼末尾應用httpBody以上,一個例外是OAMutableRequest內拋出。我在想有些事情我做錯了或沒有設置。它似乎與我沒有使用的參數數組有關...?
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSArray objectAtIndex:]: index 1 beyond bounds [0 .. 0]' *** Call stack at first throw:(0 CoreFoundation 0x00ddc5a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f30313 objc_exception_throw + 44
2 CoreFoundation 0x00dd21cc -[__NSArrayI objectAtIndex:] + 236
3 TwooWrapper 0x0000d310 -[OAMutableURLRequest parameters] + 610
4 TwooWrapper 0x0000d45d -[OAMutableURLRequest _signatureBaseString] + 39
5 TwooWrapper 0x0000c619 -[OAMutableURLRequest prepare] + 213
6 TwooWrapper 0x0000c17c -[OADataFetcher
有沒有人對如何通過的Oauth這個庫,我使用,有什麼建議或上傳文件的一些信息?將是一個很大的幫助! thx
這似乎取代了以前的帖子參數。不爲我工作。其他職位領域必須包含在oauthSignature中,我不能在這裏看到類似的東西。你是如何解決這個問題的? – Geri
OAAttachment類可以用於此嗎?或OARequestParameter? – Prat
我嘗試做同樣的事情,但在POST中傳遞JSON數據。 它給我「signature_invalid」錯誤。你能指導我嗎? –