使用 AFNetworking 2.0 下载 PDF

Posted

技术标签:

【中文标题】使用 AFNetworking 2.0 下载 PDF【英文标题】:PDF download with AFNetworking 2.0 【发布时间】:2015-02-23 12:32:47 【问题描述】:

我正在做一个简单的请求,以便下载 PDF 文件,然后将其写入文件路径。 一些 PDF 被定向到失败块。 我得到的错误代码是 200,错误描述是“传输关闭,还有 2231939 字节要读取”。 下面是代码sn-p。

    NSURLRequest *request = [NSURLRequest requestWithURL:url
                                             cachePolicy:nil
                                         timeoutInterval:120];

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

    [downloadRequest setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
        if (operation.response.statusCode != 200) 
            NSLog(@"Error code(S): %d",[operation.response statusCode]);
        else
            NSData *data = [[NSData alloc] initWithData:responseObject];

            [data writeToFile:filePath atomically:YES];
            NSLog(@"successful download to %@", filePath);

            [data release];
                    
        [self fetchComplete:operation type:type];

     failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"error code: %d",[operation.response statusCode]);
        NSLog(@"error discreption: %@",[error localizedDescription]);
        [self fetchFailed:operation];
    ];

【问题讨论】:

如果您的某些文件出现此问题,您的服务器可以重置连接吗?还有其他关于错误描述的信息吗? 查看***.com/questions/1759956/… 【参考方案1】:

请试试这个例子。希望对您有所帮助!

// 第一步:创建带有下载文件完整路径的NSURL // 例如试试这个: NSString *fileUrl = @"https://pbs.twimg.com/profile_images/2331579964/jrqzn4q29vwy4mors75s_400x400.png"; // 并使用我们的 URL 创建 NSURLRequest 对象

NSURL *URL = [NSURL URLWithString:fileUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

// 第二步:保存下载文件名 // 例如我们的文件名字符串等于'jrqzn4q29vwy4mors75s_400x400.png'

NSString *fileName = [URL lastPathComponent];

// 第 3 步:使用我们的请求创建 AFHTTPRequestOperation 对象

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

// 第 4 步:设置对来自服务器的应答和请求错误的处理

[downloadRequest setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
            // here we must create NSData object with received data...
            NSData *data = [[NSData alloc] initWithData:responseObject];
            // ... and save this object as file
            // Here 'pathToFile' must be path to directory 'Documents' on your device + filename, of course
            [data writeToFile:pathToFile atomically:YES];
         failure:^(AFHTTPRequestOperation *operation, NSError *error) 
            NSLog(@"file downloading error : %@", [error localizedDescription]);
        ];

// 第五步:开始异步下载

[downloadRequest start];

【讨论】:

以上是关于使用 AFNetworking 2.0 下载 PDF的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0,使用 CoreData (MagicalRecord) 保存下载状态

使用 AFNetworking 2.0 下载 PDF

如何使用 AFNetworking 2.0 下载文件

AFNetworking 2.0 - 在监控进度的同时批量下载图像

AFNetworking 2.0 完成多张图片下载

如何在 AFNetworking 2.0 中实现带身份验证的图像下载?