Метод HTTP PUT с NSURLSession

Я борюсь с классом NSURLSession, представленным в iOS 7 SDK, и я застрял в точке, где мне нужно вызвать мой REST API с помощью метода PUT.

Я уже реализовал методы GET и POST, которые отлично работают с этим:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:httpMethod]; // GET/POST works, PUT does not
    NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        if (!error){
            // do something here
            ( ... )
        } else {
            // process error
            ( ... )
        }
    }];
    [postDataTask resume];

К сожалению, установка httpMethod в PUT не работает (она ведет себя как GET). Вызов содержимого * url из cURL-консоли отлично работает, поэтому путь к API в порядке.

Как создать корректный запрос PUT для моего API с помощью NSURLSession?

Ответ 1

Вам нужно установить данные с помощью метода NSMutableURLRequest setHTTPBody, так же как и с помощью POST.

- (void)setHTTPBody:(NSData *)data