NSURLSession 委托方法未调用

2024-03-19

我创建了一个非常简单的应用程序来从我的网络服务器下载文本文件。我可以与 NSURLConnection 完美配合,但我正在尝试迁移到 NSURLSession。

我遇到的问题是没有调用任何委托方法。

我的服务器受密码保护,因此我需要使用基本的 http 身份验证来访问该文件,但是当 didReceiveChallenge 方法从未被调用时。

代码行 [getFileTaskresume] 似乎对任何事情都没有影响。

我的设置如下:

@interface ViewController : UIViewController <NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSURLSessionTaskDelegate>
{
   NSURLSession *session;
}

从 viewDidLoad 调用以下方法:

-(void)setUpTheNetworking
{
    NSString *fileURL = @"www.mywebsite.com/utility/file.txt";

    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    sessionConfig.allowsCellularAccess = YES;
    sessionConfig.timeoutIntervalForRequest = 10;
    sessionConfig.timeoutIntervalForResource = 10;
    sessionConfig.HTTPMaximumConnectionsPerHost = 1;

    session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];

    NSURLSessionDownloadTask *getFileTask = [session downloadTaskWithURL:[NSURL URLWithString:fileURL]];

    [getFileTask resume];
}

我实现的委托方法是:

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{
    NSLog(@"Here we go");
}

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes
{
    NSLog(@"Here we go");
}

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
    NSLog(@"Here we go");
}

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{
   if (challenge.previousFailureCount == 0)
   {
       NSURLCredentialPersistence persistence = NSURLCredentialPersistenceForSession;
       NSURLCredential *credential = [NSURLCredential credentialWithUser:user password:@password persistence:persistence];
       completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
   }
   else
   {
       // handle the fact that the previous attempt failed
       NSLog(@"%s: challenge.error = %@", __FUNCTION__, challenge.error);
       completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
   }
}

 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
   didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
   completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{
    {
        if (challenge.previousFailureCount == 0)
        {
             NSURLCredential *credential = [NSURLCredential  credentialWithUser:user password:password persistence:NSURLCredentialPersistenceForSession];
        completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
        }
        else
        {
            NSLog(@"%s; challenge.error = %@", __FUNCTION__, challenge.error);
            completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
        }

    }
}

Thanks!


SOLVED!

以下代码行是罪魁祸首:

 NSString *fileURL = @"www.mywebsite.com/utility/file.txt";

原来它也需要 http:// 在那里,所以这个有效

 NSString *fileURL = @"http://www.mywebsite.com/utility/file.txt";

我仍然觉得很奇怪,它不起作用。我原以为会弹出一个错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSURLSession 委托方法未调用 的相关文章

  • 从异步 F# 在主线程上执行代码

    我正在 F 中实现以下 Swift 方法 func downloadCachedImage url URL if let cachedImage imageCache object forKey url absoluteString as
  • 如何将 NSURLSessionConfiguration 配置到 NSObject 类中?

    我想得到服务器响应NSObject当我收到响应时 它已返回到 viewController as 我在服务器调用上实现NSObject上课然后我打电话给NSObject方法但在服务器响应之前我的NSString已返回为null NSObje
  • UITableView 延迟图像加载,图像在表格停止滚动后出现

    我使用 NSUrlConnection 为 UITableView 实现了延迟图像加载 这一切都运行得非常好 当我打开桌子时 等待一秒钟 在 3G 上 我会自动获取图像 但是 当我滚动时 表格会加载新单元格 启动 NSURLConnecti
  • 是否可以在不与ios集成的情况下下载Google Drive文件

    是否可以从 google 驱动器下载文件而不集成它的 sdk 类文件 或身份验证 考虑以下场景 我在我的示例应用程序中使用了 UIWebView 我通过 UIWebView 登录 Google Drive 就像登录 Google Drive
  • HTTP 状态代码 411 - 需要长度

    我尝试从服务器获取数据 我使用 NSURLConnectionDelegate NSURLConnectionDataDelegate 有代码 目标 C void sendRequest NSURL url NSURL alloc init
  • 在哪里提供 NSURL 值?

    每次我运行该应用程序时 它都会崩溃并且控制台显示 由于未捕获的异常 MissingDatabaseURL 而终止应用程序 原因 无法获取 FirebaseDatabase 实例 在 FIRApp 中或从您的 databaseForApp U
  • iOS:从 url 加载图像

    我需要从 url 加载图像并将其设置在 UIImageView 中 问题是我不知道图像的确切大小 那么如何才能正确显示图像呢 只需使用 UIImage 的 size 属性即可 例如 NSURL url NSURL URLWithString
  • 你如何知道 NSURLSession 对象何时已被 iOS 失效?

    我在测试中发现一个错误 偶尔会收到以下 iOS 错误 标识符为 GUID 的后台 URLSession 已存在 即使我在每次测试后的清理调用中对 NSURLSession 调用 invalidateAndCancel 我正在寻找一种方法来等
  • UIWebView 和 NSURLConnection 共享 cookie 存储吗?

    我正在构建一个使用 Google App Engine 作为后端的 iOS 应用程序 Google 提供了一个存储身份验证 cookie 的 HTML 登录站点 如果我在 UIWebView 中访问该站点并且用户登录 那么这些 cookie
  • 使用 Base64 和 JSON 上传大图像

    我正在使用此功能将图像上传到服务器JSON 为此 我首先将图像转换为NSData然后到NSString using Base64 当图像不是很大时 该方法工作正常 但当我尝试上传 2Mb 图像时 它会崩溃 问题是服务器没有收到我的图像 即使
  • 当前安全范围书签的内核资源限制是多少?

    的文档 NSURL startAccessingSecurityScopedResource state 您必须平衡对 startAccessingSecurityScopedResource 方法的每次调用与对 stopAccessing
  • 如何从 Swift NSURLSession 获取数据?

    例如 我有以下代码 let task NSURLSession sharedSession dataTaskWithURL url completionHandler data response error gt Void in var d
  • 使用单个共享后台线程进行 iOS 数据处理?

    我有一个应用程序 可以从网络下载大量资源 并对每个资源进行一些处理 我不希望这项工作发生在主线程上 但它非常轻量级且优先级低 因此所有这些都可以真正发生在同一个共享工作线程上 这似乎是一件好事 因为设置和拆除所有这些工作线程都需要工作 没有
  • Swift 从照片库中获取视频的 NSData

    我使用 UIImagePickerController 从我的库中选择视频 我需要提取视频文件的 NSData 我使用以下操作从我的库中选择视频 但我的数据似乎为零 但是我的 AVPlayer 播放生成的 NSURL 中的视频 所以我知道问
  • NSURLSessionDownloadTask 出现存储几乎已满磁盘警告的问题

    我在使用 NSURLSessionDownloadTask 处理 ios 上的 空间不足 磁盘已满 错误时遇到问题 如果由于应用程序中完成下载而导致磁盘已满 我会接到电话 URLSession 会话 NSURLSession 任务 NSUR
  • iOS NSURLSession,如何在didCompleteWithError中重试

    我想在我的服务器上尝试一次调用 直到成功为止 我想每 30 秒尝试一次 所以我使用 NSURLSession 进行通话 NSURLSessionDownloadTask task self session downloadTaskWithR
  • NSURLConnection 的 URL 文件大小 - Swift

    我想在下载之前从 url 获取文件大小 这是 obj c 代码 NSURL URL NSURL URLWithString ExampleURL NSMutableURLRequest request NSMutableURLRequest
  • NSURLRequest 缓存问题 iOS 7

    在iOS 7中cachePolicy不起作用 它只是缓存下载的json URLRequest NSString url NSString stringWithFormat http www semhora com jsonparser ca
  • 来自curl的NSUrlRequest用于条纹

    我需要使用以下说明发出 http post 请求 curl https api stripe com v1 tokens u sk test BQokikJOvBiI2HlWgH4olfQ2 d bank account country U
  • 使用 NSURLSession 进行单元测试

    我想为使用共享的方法编写单元测试NSURLSession 特别是 NSURLSessionDataTask下载数据 基本上 我希望目标方法能够接收模拟响应 数据 而不需要互联网连接 模拟这些组件的不太不显眼的方式是什么 我正在考虑填充NSU

随机推荐

  • 如何在 PHP 中返回正则表达式匹配,而不是替换

    我试图在 HTML 文本块中提取图像的第一个 src 属性 如下所示 Lorem ipsum img src http example com img jpg consequat 创建正则表达式来匹配 src 属性没有问题 但是我该如何re
  • 如何解决sql server性能问题

    好吧 这个普遍问题在过去 6 个月里已经出现了两次 不同的存储过程 我们的内部用户报告了应用程序中的超时错误 我们可以在受控环境中重现应用程序中的问题 因此 我们使用 sp who2 执行检查阻塞的正常步骤 一切看起来都很好 没有阻塞 因此
  • 如何通过twitter的Fabric API获取用户数据(Android)

    我已经成功地将twitter的fabric api集成到我的项目中 推特登录按钮
  • “依赖倒置”和“接口设计”是相同的原则吗?

    依赖倒置原则 DIP 和 接口设计原则 是否表达了相同的原则 如果不是 会有什么区别 EDIT 为了澄清并缩小上下文范围 我所说的接口是指编程接口 例如 Javainterface或 C 中的纯抽象基类 不涉及其他 合同 我只是想参与并引用
  • 去除android上TabLayout下面的阴影

    我试图在使用 TabLayout 时删除选项卡下方的阴影 TabLayout 是在正常布局中定义的 而不是作为工具栏或操作栏的一部分 将主题设置为
  • Javascript - 无法实例化同一对象的多个实例

    我正在尝试实例化同一对象的多个实例 第一个实例化工作正常 但是当我尝试初始化另一个对象时 出现此错误 Uncaught TypeError Object
  • 在 MySQL 中使用 Join 比仅使用 Rand() 更快

    How is SELECT t id FROM table t JOIN SELECT FLOOR max id rand AS maxid FROM table AS tt ON t id gt tt maxid LIMIT 1 比 快
  • 如何创建和管理多租户 ASP MVC 应用程序

    我想创建一个使用主机名来确定客户的多租户应用程序 例如 CustomerOne myapp com AnotherCo myapp com AndOneMore myapp com 我可以毫无问题地完成数据库和安全方面的工作 我还可以从 U
  • 一个好的 HTML 骨架

    我想重新开始创建网站 但我已经离开 HTML 领域有一段时间了 我只是想知道这对于网站来说是否是一个好的框架 如果没有 我应该更改 添加和 或删除什么
  • android 从广播接收器更新小部件

    我有一个小部件 我必须在操作时更新该小部件android media RINGER MODE CHANGED发生 我有以下广播接收器 public void onReceive Context context Intent intent A
  • height: 100% 或 min-height: 100% 对于 html 和 body 元素?

    在设计布局时我设置了html body元素 height to 100 但在某些情况下 这会失败 那么应该使用什么呢 html body height 100 or html body min height 100 好吧 这不是基于意见的
  • 如何将矩阵子集化为一列,维护矩阵数据类型,维护行/列名称?

    当我将矩阵子集到单列时 结果是数字类 而不是矩阵 即 myMatrix 5 子集到第五列 是否有一种紧凑的方法来子集为单列 维护矩阵格式 并维护行 列名称 而不需要做一些复杂的事情 例如 matrix myMatrix 5 dimnames
  • 哪些 R 函数不适合编程使用?

    一些函数如browser仅在交互使用时才有意义 人们普遍认为subset功能只能交互使用 https stackoverflow com q 9860090 134830 相似地 sapply不适合编程使用 因为它不能简化零长度输入的结果
  • 使用javascript将Base64转换为图像文件

    有谁知道我可以使用任何简单的javascript将base64字符串转换为图像 最好是jpg格式 以便我可以将图像保存到文件中 这是针对签名板应用程序的 我可以将签名转换为 base64 格式 但需要将签名另存为图像文件以用于嵌入到 Cry
  • ggplot - 集中facet_grid标题并仅出现一次[重复]

    这个问题在这里已经有答案了 我已经创建了一个图表ggplot里面有两个变量facet grid 我希望每个方面的标题仅在该方面的中心重复一次 例如 第一个原始 上刻面 中的零和一将仅出现一次并且出现在中间 在我的原始图中 每个方面的图数不相
  • Android Java——在Android平台上反序列化文件

    我有一个 java 程序 可以序列化稍后存储和读取的文件 因此 我获取序列化文件并尝试使用与 Java SE 中使用的完全相同的代码在我的 Android 手机 在 Eclipse 中工作 上读取它们 FileInputStream fis
  • Java中如何连接字符串?

    The strKeyword将根据循环重复进行 如何将结果保存为新字符串 例如 如果工作 hello 重复两次 我现在如何将 hellohello 创建为全新的字符串 for int l 0 l lt newKeywordLength l
  • Azure CLI:无法在 Windows PowerShell 中转义管道字符 (|)

    Scenario 我尝试在 Windows 计算机上使用 Azure CLI 创建 Azure Web 应用程序 不幸的是 我无法为我的网络应用程序选择运行时 当我尝试时 az webapp create n name g grop p p
  • 如何在javascript中添加到所有浏览器的收藏夹/书签[重复]

    这个问题在这里已经有答案了 我在使用 java 脚本的 添加到收藏夹 书签网页 中有一些查询 我只是在这个中进行了查询Link http www apphp com index php snippet javascript add to f
  • NSURLSession 委托方法未调用

    我创建了一个非常简单的应用程序来从我的网络服务器下载文本文件 我可以与 NSURLConnection 完美配合 但我正在尝试迁移到 NSURLSession 我遇到的问题是没有调用任何委托方法 我的服务器受密码保护 因此我需要使用基本的