AFNetworking下载自定义文件

时间:2013-04-20 15:24:55

标签: objective-c afnetworking

我正在尝试使用AFNetworking从我的服务器下载自定义文件类型 - 出于某种原因,它说它已成功下载文件,但似乎结果已损坏。

这是我在日志中得到的:

2013-04-20 11:17:40.326 app[18083:907] start downloads
2013-04-20 11:17:40.392 app[18083:907] Sent 283280 of 283280 bytes, /var/mobile/Applications/187878BC-9D5A-4E1C-9EE4-34512D93BF68/Documents/theprice.cm
2013-04-20 11:17:40.393 app[18083:907] Successfully downloaded file to /var/mobile/Applications/187878BC-9D5A-4E1C-9EE4-34512D93BF68/Documents/theprice.cm

我的网速很快,但肯定没有在.04秒内下载283,280字节。

这是我的AFNetworking代码:

NSLog(@"start downloads");

NSString *urlpath = [NSString stringWithFormat:@"http://www.domain.com/ygp6bcckll8mw62.cm"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlpath]];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"theprice.cm"]];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Successfully downloaded file to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

[operation setDownloadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %lld of %lld bytes, %@", totalBytesWritten, totalBytesExpectedToWrite, path);
}];

[operation start];

当我尝试访问文件内容时,正如人们所期望的那样:它是空的。

有关为何没有正确下载自定义文件类型的任何想法? (.cm)我是否遗漏了AFNetworking代码中的某些内容,使其表现得很奇怪?

2 个答案:

答案 0 :(得分:0)

您确定outputStream是否已正确刷新并关闭?可能是AFHTTPRequestOperation在收到所有数据后将传输标记为成功完成,但是没有意识到写入持久存储的任何特别延迟和/或要求。

答案 1 :(得分:0)

AFNetworking不会向其输出流发送打开的消息。尽管如此,它在完成或发生错误时会向其发送close消息。您可以尝试在启动请求之前将open发送到输出流将有所帮助。

否则会收到警告,AFNetworking不会检查流中的潜在故障代码,也不会保证所有收到的字节都已完全写入流中。