Я использую библиотеку OAuthConsumer от Джона Кросби ( ссылка на код Google )
Я успешно настроил свой проект с токеном / секретным ключом доступа и запроса для создания базового авторизованного 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 с этой библиотекой, которую я использую,или какие-либо предложения?была бы большая помощь!ТНХ