对于iOS,我编写了一个自定义委托和NSUrlSession
的实现。它适用于 Http 网址。但是,当我尝试从经过身份验证且需要传递 Cookie 的 HTTPS 源下载图像资源时,下载失败,NSUrlErrorCode
-1013 或 -1002。
NSMutableUrlRequest req = new NSMutableUrlRequest(new NSUrl(uri.ToString()));
req.Headers = dictHeaders;//
NSUrlSessionDownloadTask newTask = session.CreateDownloadTask(req);
activeDownloads.Add(newTask);
newTask.Resume();
因此,在NSUrlSessionDownloadDelegate
中,我已经实现了DidReceiveChallenge
方法,但目前没有在那里传递任何内容,因为我想从我的初始登录中传递cookie,如上所述。
NSUrlSession
对整个应用程序使用共享会话,但我的初始登录 API 是使用 RestSharp.RestClient
完成的,它获取我可以在整个应用程序中使用的 cookie。
所以我的问题是如何将饼干传递给NSUrlSession
?
据我所知,所有使用 cookie 的工作都经过NSHTTPCookieStorage
类 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookieStorage_Class/index.html。您可以使用cookieAcceptPolicy
来配置如何在应用程序中使用 Cookie,甚至可以根据需要手动添加/删除 Cookie。
NSURLSession 将从 NSHTTPCookieStorage 获取 cookie。