Как настроить данные для запроса «PUT» с помощью AFNetworking?

Я начал использовать AFNetworking, и он работает хорошо, когда он получает простой «GET» -запуск. Однако теперь я пытаюсь выполнить запрос «POST». Я использую следующий код для выполнения запроса «GET». При взгляде на puthPath из AFHTTPClient нет способа установить данные для тела. Я предполагаю, что есть другой способ этого. Я рассматриваю AFHTTPOperation как способ его исправления. Однако я не получаю, чтобы это работало. Проблема в том, что я не знаю, как использовать его с базовой аутентификацией.

Может ли кто-нибудь дать мне подсказку, как сделать простой запрос «POST» с AFNetworking?

AFHTTPClient* client = [AFHTTPClient clientWithBaseURL:ServerURL]; [client setAuthorizationHeaderWithUsername:self.username password:self.password]; NSString* resourcePath = [NSString stringWithFormat:@"/some/resource/%@", endPath]; [client getPath:resourcePath parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { // Success code omitted } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // Some error handling code omitted } ]; 

3 Solutions collect form web for “Как настроить данные для запроса «PUT» с помощью AFNetworking?”

Я не нашел никакого простого способа сделать это. Но я сделал это как рекомендовал и создал свой собственный подкласс класса AFHTTPClient . В подклассе я выполнил приведенные ниже методы. Это позволяет выполнять как POST-запрос, так и PUT-запросы с моими собственными данными.

 - (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters data:(NSData*)data success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; { NSURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:parameters data:data]; AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; [self enqueueHTTPRequestOperation:operation]; } - (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters data:(NSData*)data success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; { NSURLRequest *request = [self requestWithMethod:@"PUT" path:path parameters:parameters data:data]; AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; [self enqueueHTTPRequestOperation:operation]; } -(NSMutableURLRequest*)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters data:(NSData*)data; { NSMutableURLRequest* request = [super requestWithMethod:method path:path parameters:parameters]; [request setHTTPBody:data]; return request; } 

С AFNetworking 2.0 я просто копирую код из

 - (AFHTTPRequestOperation *)PUT:(NSString *)URLString parameters:(id)parameters success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; 

и добавить

 [request setHTTPBody:data]; 

Вот:

 NSString* str = [bookDetailLink objectForKey:@"Body"]; NSData* data = [str dataUsingEncoding: NSUTF8StringEncoding]; NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:@"PUT" URLString:bookingDetailUrl parameters:nil error:nil]; [request setHTTPBody:data]; AFHTTPRequestOperation *operation = [self.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *op, NSHTTPURLResponse *response) { NSLog(@"%@", response); } failure:^(AFHTTPRequestOperation *op, NSError *error) { NSLog(@"%@", error); }]; [self.manager.operationQueue addOperation:operation]; 

Я интегрирую Skyscanner API в наше приложение iOS, используя AFNetworking.

С AFNetworking 1.3.2 для меня работает следующий код:

 NSData *imageData = UIImageJPEGRepresentation(thumb, 0.85F); AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"https://example.com/"]]; NSMutableURLRequest *request = [httpClient requestWithMethod:@"PUT" path:@"/foo" parameters:nil]; [request setHTTPBody:imageData]; [request setValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"]; AFHTTPRequestOperation *operation = [httpClient HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *op, NSHTTPURLResponse *response) { NSLog(@"%@", response); } failure:^(AFHTTPRequestOperation *op, NSError *error) { NSLog(@"%@", error); }]; [operation start]; 

Это приводит к запросу PUT с правильными заголовками, Content-Lenght и общей RESTfulness 🙂

  • Как определить во время выполнения, если приложение распространяется для внутреннего или внешнего тестера?
  • Установка новых и старых версий Xcode
  • Пользовательский URL-адрес, открывающий мое приложение на iPhone - как это делается с Youtube
  • Как показать ход загрузки при загрузке нескольких изображений в SDK IOS
  • Создание интерактивных видео в iPad - приложение для демонстрации продукта
  • Swift: перемещение UIView на жесте слайдов
  • Просмотр файловой системы в iOS
  • Анимация непрозрачности GMSMarker не повторяется
  • Могут ли версии и номера приложений приложения iOS быть строками?
  • Как обмениваться данными заметок с расширением share в iOS 9?
  • iPhone: может ли разработчик, кроме командного агента, создавать приложение для распространения
  • Interesting Posts

    UIActivityViewController не показывает ссылку на facebook при совместном использовании

    Экспорт видео с помощью PhotoKit (PHAsset) каждый раз дает разные видеофайлы

    Добавление представления контейнера в UICollectionViewCell

    iPhone под управлением iOS 8.3 отображается как неприемлемый в Xcode 6.2

    Swift: Как я могу получить слушатель, который сообщает, когда соединение потеряно и когда оно вернется?

    Как быстро изменить объем ios с помощью UISlider

    Как сделать круглую форму любого вида

    Удалить флажок -Objc из Cocoapods install

    UITableView не прокручивает

    Удаленное уведомление не может быть получено с помощью распределения TestFlight

    Невозможно предварительно заполнить номер телефона и тело сообщения в SMS-ссылке на iPhone, если приложение SMS не работает в фоновом режиме

    Преобразование NSData в sockaddr struct в swift

    Это правильное использование блока завершения очереди операций?

    Неопределенные символы для архитектуры i386 при построении приложения Cordova 3.4

    NSPredicate для отношений множественного числа во многих данных Core Data

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.