AFNetworking 2.0 HTTP POST进度

我怎样才能获得AFHTTPRequest的进展? 我试过在网上search。
我在用:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSDictionary *params = @{@"gameId" : datas[0], @"p1": datas[1], @"p2":datas[2], @"turn":datas[3] }; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager POST:@"http://localhost/thepath/isprivate/thefile.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; 

有没有像我可以用来访问AFNetworking 2.0 HTTP POST的进度的属性或方法?

你可以使用下面的方法

 - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler 

AFHTTPSessionManager类。

更新:

通常你会喜欢使用KVO来上传值。 所以应该使用下面的东西:

 static void * kDGProgressChanged = &kDGProgressChanged; ... [progress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:kDGProgressChanged]; ... - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(__unused NSDictionary *)change context:(void *)context { if (kDGProgressChanged == context) { dispatch_async(dispatch_get_main_queue(), ^{ [self updateProgressInfo]; }); } } 

尝试这个:

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSDictionary *params = @{@"gameId" : datas[0], @"p1": datas[1], @"p2":datas[2], @"turn":datas[3] }; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:@"http://localhost/thepath/isprivate/thefile.php" parameters:params error:&error]; AFHTTPRequestOperation *requestOperation = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"operation success: %@\n %@", operation, responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; [requestOperation setUploadProgressBlock:^(NSUInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) { double percentDone = (double)totalBytesWritten / (double)totalBytesExpectedToWrite; NSLog(@"progress updated(percentDone) : %f", percentDone); }]; [requestOperation start]; 

希望这可以帮助。

实现这个最短的方式是

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; AFHTTPRequestOperation *requestOperation = [manager POST:@"/service/user/authenticate" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { //Your Business Operation. NSLog(@"operation success: %@\n %@", operation, responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; //Here is the upload progress [requestOperation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { double percentDone = (double)totalBytesWritten / (double)totalBytesExpectedToWrite; //Upload Progress bar here NSLog(@"progress updated(percentDone) : %f", percentDone); }];