Как настроить данные для запроса «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 🙂

  • iOS - Глобальный обработчик исключений
  • как я могу подписать приложение iOS из facebook - вроде ДЕЙСТВИТЕЛЬНО выйти. Устройства iOS используют cookie Safari, которое мое приложение не может забыть
  • Лучшие методы безопасности при отправке номера кредитной карты в REST API из iOS
  • iOS записывает видео и воспроизводит MP3 одновременно
  • Преобразование входящего NSStream в View
  • Удаление события с помощью набора событий в iPhone
  • iphone - попробуйте, поймайте вопрос
  • Ориентация запуска iPad при плоской поверхности
  • DeviceControllerApplicationConnectionFailed в google chromecast
  • USB-связь между iPad и Mac или ПК
  • iPhone приложение работает на iPad
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.