【问题标题】:How to pass cookie to NSUrlSession?如何将 cookie 传递给 NSUrlSession?
【发布时间】:2015-04-06 22:36:12
【问题描述】:

对于 iOS,我编写了 NSUrlSession 的自定义委托和实现。它适用于 Http url。但是,当我尝试从经过身份验证且需要传递 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。

所以我的问题是如何将 cookie 传递给 NSUrlSession

【问题讨论】:

    标签: ios xamarin nsurlsession nsurlsessiondownloadtask


    【解决方案1】:

    据我所知,所有使用 cookie 的工作都经过 NSHTTPCookieStoragehttps://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookieStorage_Class/index.html。您可以使用cookieAcceptPolicy 来配置 cookie 在您的应用程序中的使用方式,甚至在需要时手动添加/删除 cookie。

    NSURLSession 将从 NSHTTPCookieStorage 获取 cookie。

    【讨论】:

    • 是的,这就是文档所说的,也是我尝试的第一件事,但是我们可以将字符串(标头值)转换为 NSHTTPCookieStorage 对象吗?
    • 您需要填写所有cookie字段,至少,域/名称/值。你到底需要转换什么字符串?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2022-06-25
    • 2013-05-09
    • 2016-03-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多