AFNetworking 3.0 multipartFormRequestWithMethod appendPartWithFileData теряет тело запроса и заголовок - PullRequest
0 голосов
/ 27 апреля 2018

Многоэтапная загрузка изображения работала нормально с AFNetwrking 1.0, и мне нужно обновить систему до 3.0. Однако параметры запроса и тело исчезают. В AFURLRequestSerialization.m, похоже, говорится:

[self.request setHTTPBodyStream:self.bodyStream]

, хотя части и корпус присутствуют в self.bodyStream. Похоже, что ошибка не возвращается из setHTTPBodyStream.

Это код:

AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer];

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production

manager.securityPolicy.validatesDomainName = NO;

[requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"content-type"];

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

[formData appendPartWithFileData: imageData name:@"file" fileName:@"temp.jpeg" mimeType:@"image/jpeg"];
                         } error:nil];

[request setTimeoutInterval:20000];


NSURLSessionUploadTask *uploadTask;

NSLog(@"Request body %@", [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]); NSLog(@"Request HTTP Headers: %@", request.allHTTPHeaderFields); NSLog(@"%@", [request HTTPBody]);

uploadTask = [manager

1 Ответ

0 голосов
/ 27 апреля 2018

AFNetwrking 3.0 явно должен использоваться из кода Swift, потому что он больше не поддерживает ручное управление памятью. К сожалению, вы должны переписать код Objective C.

...