从URL查询获取pdf下载位置

时间:2015-05-04 12:34:37

标签: ios objective-c nsurlsession

我有一个PDF下载位置,格式如下:

https://www.example.com/apps/user_name?txtFile=directory_1%2Fmy_pdf_file.pdf

为了下载这个提到的PDF(my_pdf_file.pdf),我需要传递哪个NSURL,例如NSURLSessionDownloadTask?

更新: 这个问题似乎与url重定向到另一个位置有关,这在一开始就是未知的。

更多信息:

  • 下载格式为http://www.example.com/my_pdf_file.pdf
  • 的文件时没问题
  • 我使用AFNetworking下载文件
  • 我的下载代码如下:

        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
            NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
            return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
        } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
            if (!error) {
                DDLogInfo(@"File downloaded to: %@", filePath);
            }
        }];
        [downloadTask resume];
    

1 个答案:

答案 0 :(得分:0)

要使用NSURLSession下载PDF文件,请执行以下操作:

NSString *londonWeatherUrl = @"https://www.example.com/apps/user_name?txtFile=directory_1%2Fmy_pdf_file.pdf";

首先是使用NSURLConnection时如何进行此调用:

NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:londonWeatherUrl]];

[NSURLConnection sendAsynchronousRequest:request
   queue:[NSOperationQueue mainQueue]
   completionHandler:^(NSURLResponse *response,
                       NSData *data,
                       NSError *connectionError) {
      // handle response
}];

现在让我们使用NSURLSession。请注意,这是使用NSURLSession进行快速调用的最简单方法。在本教程的后面,您将看到如何配置会话和设置委托等其他功能。

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:londonWeatherUrl]
          completionHandler:^(NSData *data,
                              NSURLResponse *response,
                              NSError *error) {
            // handle response

  }] resume];