如何将 cookie 传递给 NSUrlSession



对于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。

最新更新