2015-05-29 2 views
2

Использование AFNetworking для связи между REST API и моим приложением Я столкнулся с странным поведением wenn, пытающимся загрузить изображение с запросом PATCH.AFNetworking 2.5.4 отправка файла с запросом PATCH

Я использую следующий код:

- (void) uploadImage: (UIImage *)image { 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    NSDictionary *parameters = @{}; 
    AFHTTPRequestSerializer *requestSerializer = [manager requestSerializer]; 
    NSError *e = nil; 

    NSMutableURLRequest *request = [requestSerializer multipartFormRequestWithMethod:@"PATCH" 
                      URLString:requestString 
                      parameters:parameters 
                 constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

     [formData appendPartWithFileData:UIImagePNGRepresentation(image) 
            name:@"image" 
           fileName:@"image.png" 
           mimeType:@"image/png"]; 
    } error:&e]; 


    [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog("OK"); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog("FAILED"); 
    }]; 
} 

Ни success не будет достигнута failed блок работы.

Wenn Меняет метод запроса на POST, все работает нормально, но сервер принимает только метод PATCH для этого случая.

Я что-то не так?

+0

Здравствуйте Андрей, вы получите какой-либо ответ на это? Я также пытаюсь отправить файл с помощью метода AFNetworking и PATCH, но на данный момент я просто не могу найти способ. –

ответ

0

я наконец-то нашел решение для моего вопроса:

- (void)uploadImage:(UIImage *)image 
       withSuccess:(SomeSuccessBlock)success 
        failure:(SomeFailureBlock)failure { 

NSString *requestString = "Some url"; 
NSError *e = nil; 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
AFHTTPRequestSerializer *requestSerializer = [manager requestSerializer]; 

NSMutableURLRequest *request = [requestSerializer multipartFormRequestWithMethod:@"POST" URLString:requestString parameters:@{} 
                 constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

                  [formData appendPartWithFileData:UIImagePNGRepresentation(image) 
                         name:@"user[avatar]" 
                        fileName:@"avatar.png" 
                        mimeType:@"image/png"]; 

                 } error:&e]; 

if (e && failure) { 
    failure(e); 
    return; 
} 

[request setHTTPMethod:@"PATCH"]; 
[request setValue:@"PATCH" forHTTPHeaderField:@"X-HTTP-Method-Override"]; 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 

    if (success) { 
     success(); 
    } 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    if (failure) { 
     failure(error); 
    } 

}]; 

    [operation start]; 
} 
Смежные вопросы