首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSHttpCookie在iOS版本10的情况下获取cookie

NSHttpCookie在iOS版本10的情况下获取cookie
EN

Stack Overflow用户
提问于 2018-11-05 10:04:34
回答 1查看 773关注 0票数 0

我想使用WebClient在iOS中实现下载pdf文档功能。目前它的工作非常适合iOS 11,在这里,我正在使用HttpCookieStore获得cookie。对于iOS 10,我无法检索cookie。

工作流程是1.获取cookies 2.创建webclient服务器请求并将cookie添加到标头。

对于iOS 11,下面是获取cookies的语法:

代码语言:javascript
复制
NSHttpCookie[] cookieStoreData;

    if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                var cookieStore = webView.Configuration.WebsiteDataStore.HttpCookieStore;
                cookieStoreData = await cookieStore.GetAllCookiesAsync();
            }

对于iOS 10,

代码语言:javascript
复制
cookieStoreData = NSHttpCookieStorage.SharedStorage.Cookies;  

在这些场景中,它不会返回任何cookie,因此webclient对服务器的下一次调用将失败(如果是iOS 10)。

代码语言:javascript
复制
StringBuilder cookies = new StringBuilder();
var webClient = new WebClient ();

foreach (var temp in cookieStoreData)
{
  cookies.Append(temp.Name + "=" + temp.Value + ";");
}  

webClient.Headers.Add(HttpRequestHeader.Cookie, cookies.ToString()); 



webClient.DownloadDataAsync (webView.Url);
webClient.DownloadDataCompleted += (s, e) => {
if (e.Error == null)
{
    // Downloading data......
}
else 
{
    Console.WriteLine("URL for page : " + e.Error.GetType());
    Console.WriteLine("URL for page : " + e.Error);
    new UIAlertView("Done", "Download Failed. Please try again.", null, "OK", null).Show();
}
EN

回答 1

Stack Overflow用户

发布于 2018-11-07 00:43:51

事业:

  1. NSHTTPCookieStorage不可靠,因为WKWebView在一个单独的进程中完成它的所有网络,所以您不能访问web视图使用的NSHTTPCookieStorage对象。
  2. JavaScript (和WKUserScript一样)没有看到任何带有HttpOnly标记的cookie。
  3. WKWebsiteDataStore让您知道cookie的存在,但不让您获取内容。
  4. 您展示的委托方法不会看到所有cookie,因为并不是所有的响应都是导航响应。

解决方案:最好的解决方案是使用UIWebview而不是WKWebView.For,更详细地说,您可以访问这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53152127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档