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 委托方法未调用 的相关文章

  • 如何检查特定 URL 处是否存在文件?

    如何检查网站上是否存在文件 我在用NSURLConnection和我的NSURLRequest and an NSMutableData对象存储返回的内容didReceiveData 委托方法 在里面connectionDidFinishi
  • 使用 cocoa touch 测量 iPhone 上下载速度的最佳方法

    我正在制作一个应用程序 我想提供的功能之一是测量连接的下载速度 为了得到这个 我使用 NSURLConnection 开始下载一个大文件 并在一段时间后取消下载并进行计算 下载的数据 经过的时间 虽然其他应用程序 例如 speedtest
  • connectionDidFinishLoading - 如何强制更新 UIView?

    我可以从互联网下载 ZIP 文件 后处理在connectionDidFinishLoading 中完成 并且工作正常 但没有更新UIView 元素 例如 我设置 statusUpdate text Uncompressing file 但该
  • CFNetwork SSLHandshake 失败 iOS 9

    有使用 iOS 9 beta 1 的人遇到过这个问题吗 我使用标准 NSURLConnection 连接到 Web 服务 一旦调用 Web 服务 我就会收到以下错误 目前该功能适用 于 iOS 8 3 可能的测试版错误吗 任何想法或想法都会
  • 应用程序强制退出并重新启动后如何恢复 NSURLSession 下载过程?

    我已经实施了NSURLSession用于从我们的服务器下载相当大的文件 现在 只要我在前台或后台工作并返回应用程序 交易就会正常工作并完成 但如果我强制退出使用多任务屏幕的应用程序 然后再次重新打开应用程序 下载过程尚未完成 尽管据我从文档
  • 在 Swift 中使用 NSURL 读取文本文件

    我想读取并显示位于 URL 的文本文件的内容 我正在为 Yosemite 编写 Mac 应用程序 我需要使用 Swift 但我坚持这样做 这是我的代码 let messageURL NSURL string http localhost 8
  • 在后台下载多个文件(仅限 iOS 7)

    我目前正在开发一个播客应用程序 该应用程序只能在 iOS 7 上运行 并且它具有允许在后台模式下同步和下载最近剧集的功能 所以很清楚同步 我实现了application performFetchWithCompletionHandler方法
  • 克服 NSURL 的 checkResourceIsReachableAndReturnError 的意外行为

    在我为 iOS 5 创建的程序中 我遇到了 NSURL 的 checkResourceIsReachableAndReturnError 方法的意外行为 我创建了一个新项目来验证该问题 并仅包含代码 NSURL url NSURL URLW
  • 你能在不破坏后退按钮的情况下拦截 UIWebView 中的 NSURLRequests 吗?

    我在将自定义 HTML 加载到我的UIWebView不破坏其goBack method 什么有效 我正在拦截我的 URL 请求UIWebView这样我就可以加载自定义 HTML 我可以控制所有 HTML 因此我的特殊应用程序请求使用自定义方
  • 'NSInvalidArgumentException',原因:'*** -[NSURL initFileURLWithPath:]: nil 字符串参数'

    我对这里发生的事情感到摸不着头脑 打印插件不起作用 我正在尝试向应用程序添加打印机插件 映射 xml 并加载 html 文件后 我在 Xcode 中没有看到错误 但是 当我运行该应用程序时 它崩溃了并且日志状态如下 由于未捕获的异常而终止应
  • Objective-C 中面向方面的 HTTP 身份验证示例

    我正在寻找一些示例 技巧 建议以及一些用于实现 或查找其实现 面向方面的 HTTP 身份验证库的一般方向感 作为一些基础工作 我们构建了一个 iOS 库 该库为 HTTP 服务建立各种形式的身份验证 通过 Web 表单或本机模式窗口请求用户
  • NSURLSession 委托方法未调用

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

    我有一个问题 connection didWriteData totalBytesWritten expectedTotalBytes 的方法NSURLConnection 下载委托在 iOS 6 下 Under iOS 5 模拟器它工作得
  • 使用 NSURLSession 设置 cookie

    您好 我正在开发一个 Iphone 应用程序 我想在服务器响应后设置 cookie 并将其用于另一个请求 我的网络请求看起来像 NSURLSession session NSURLSession sharedSession session
  • 如何使用 Swift 从 URL 获取 HTML 源代码

    我需要查看某个 URL 给出的页面的 HTML 如果我有这个 使用 Swift 获取该 URL 的 HTML 源的最有效和同步的方法是什么 我无法在网上找到一种简洁的方法将其返回到变量中 而不是将其打印在completionHandler
  • 在哪里提供 NSURL 值?

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

    我正在将大量图像路径加载到 NSURL 中 这些图像位于按 1 PNG 2 PNG 3 PNG 到 1500 PNG 顺序排列的文件夹中 当我尝试加载它们时 let imagePath path images let url NSURL f
  • 如何在 Swift 中从备份中排除文件?

    我在 Swift 1 2 中工作得很好 因为我使用 filePath 作为字符串 现在 Swift 2 希望我们所有人都使用 URL 路径 尽管我正在阅读他们的文档 但我无法让它工作 I have var fileName myRespon
  • 如何确定 NSURLSessionTask 请求何时开始?

    I use NSURLSessionTask我正在尝试监视我的一些 HTTP 请求需要多长时间 我可以监视什么委托方法 或其他方法 NSURLSessionTask实际上提出了最初的请求 如果这是一个NSURLConnection里面一个N
  • NSURLSessionDownloadTask 出现存储几乎已满磁盘警告的问题

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

随机推荐

  • 如何在 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 我遇到的问题是没有调用任何委托方法 我的服务器受密码保护 因此我需要使用基本的