- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数组 (NSHTTPCookieStorage) 中的数据...
NSARRAY *httpCookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:aHttpUrl];
我知道存储了 3 个 cookie(我可以在 NSLog 中看到它们)。
我不知道如何根据“名称”获取 1 个特定的 cookie 值。
示例:<NSHTTPCookie version:0 name:\"username\" value:\"namehere\" expiresDate:2035-08-3 23:12:50 +0000 created:2015-08-08 23:12:49 +0000 (4.60768e+08) sessionOnly:FALSE domain:\"somedomain.com\" path:\"/example\" isSecure:FALSE>
...如何获取“值”的内容以便将其作为字符串使用?
最佳答案
像这样
NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:YOUR_NETWORK_URL]];
for (NSHTTPCookie* cookie in cookies)
{
NSLog(@"%@, ", [cookie valueForKey:@"version"]);
NSLog(@"%@, ", [cookie valueForKey:@"name"]);
NSString * this = [cookie valueForKey:@"name"];
NSLog(@"%@, ", [cookie valueForKey:@"value"]);
NSLog(@"%@, ", [cookie valueForKey:@"expiresDate"]);
NSLog(@"%@, ", [cookie valueForKey:@"created"]);
NSLog(@"%@, ", [cookie valueForKey:@"sessionOnly"]);
NSLog(@"%@, ", [cookie valueForKey:@"domain"]);
NSLog(@"%@, ", [cookie valueForKey:@"path"]);
NSLog(@"%@, ", [cookie valueForKey:@"isSecure"]);
}
或者三个 cookies ,
NSString * this1 = [cookies[0] valueForKey:@"name"]
NSString * this2 = [cookies[1] valueForKey:@"name"]
NSString * this3 = [cookies[2] valueForKey:@"name"]
等等,等等,这样做将所有使用键值的 cookie
操纵 cookies:
NSString *alipaySetCookieString = @"CAKEPHP=nil; path=#; domain=#; expires=Wed, 30-Nov-2001 01:01:01 GMT";
NSHTTPCookie * clok = [alipaySetCookieString cookie];
使用这个:类别“NSString+Cookie.h”的 header
@interface NSString(Cookie)
- (NSHTTPCookie *)cookie;
@end
类别“NSString+Cookie.m”的实现文件
#import "NSString+Cookie.h"
@implementation NSString(Cookie)
- (NSDictionary *)cookieMap{
NSMutableDictionary *cookieMap = [NSMutableDictionary dictionary];
NSArray *cookieKeyValueStrings = [self componentsSeparatedByString:@";"];
for (NSString *cookieKeyValueString in cookieKeyValueStrings) {
NSRange separatorRange = [cookieKeyValueString rangeOfString:@"="];
if (separatorRange.location != NSNotFound &&
separatorRange.location > 0 &&
separatorRange.location < ([cookieKeyValueString length] - 1)) {
NSRange keyRange = NSMakeRange(0, separatorRange.location);
NSString *key = [cookieKeyValueString substringWithRange:keyRange];
NSString *value = [cookieKeyValueString substringFromIndex:separatorRange.location + separatorRange.length];
key = [key stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[cookieMap setObject:value forKey:key];
}
}
return cookieMap;
}
- (NSDictionary *)cookieProperties {
NSDictionary *cookieMap = [self cookieMap];
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
for (NSString *key in [cookieMap allKeys]) {
NSString *value = [cookieMap objectForKey:key];
NSString *uppercaseKey = [key uppercaseString];
if ([uppercaseKey isEqualToString:@"DOMAIN"]) {
if (![value hasPrefix:@"."] && ![value hasPrefix:@"www"]) {
value = [NSString stringWithFormat:@".%@",value];
}
[cookieProperties setObject:value forKey:NSHTTPCookieDomain];
}else if ([uppercaseKey isEqualToString:@"VERSION"]) {
[cookieProperties setObject:value forKey:NSHTTPCookieVersion];
}else if ([uppercaseKey isEqualToString:@"MAX-AGE"]||[uppercaseKey isEqualToString:@"MAXAGE"]) {
[cookieProperties setObject:value forKey:NSHTTPCookieMaximumAge];
}else if ([uppercaseKey isEqualToString:@"PATH"]) {
[cookieProperties setObject:value forKey:NSHTTPCookiePath];
}else if([uppercaseKey isEqualToString:@"ORIGINURL"]){
[cookieProperties setObject:value forKey:NSHTTPCookieOriginURL];
}else if([uppercaseKey isEqualToString:@"PORT"]){
[cookieProperties setObject:value forKey:NSHTTPCookiePort];
}else if([uppercaseKey isEqualToString:@"SECURE"]||[uppercaseKey isEqualToString:@"ISSECURE"]){
[cookieProperties setObject:value forKey:NSHTTPCookieSecure];
}else if([uppercaseKey isEqualToString:@"COMMENT"]){
[cookieProperties setObject:value forKey:NSHTTPCookieComment];
}else if([uppercaseKey isEqualToString:@"COMMENTURL"]){
[cookieProperties setObject:value forKey:NSHTTPCookieCommentURL];
}else if([uppercaseKey isEqualToString:@"EXPIRES"]){
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
dateFormatter.dateFormat = @"EEE, dd-MMM-yyyy HH:mm:ss zzz";
[cookieProperties setObject:[dateFormatter dateFromString:value] forKey:NSHTTPCookieExpires];
}else if([uppercaseKey isEqualToString:@"DISCART"]){
[cookieProperties setObject:value forKey:NSHTTPCookieDiscard];
}else if([uppercaseKey isEqualToString:@"NAME"]){
[cookieProperties setObject:value forKey:NSHTTPCookieName];
}else if([uppercaseKey isEqualToString:@"VALUE"]){
[cookieProperties setObject:value forKey:NSHTTPCookieValue];
}else{
[cookieProperties setObject:key forKey:NSHTTPCookieName];
[cookieProperties setObject:value forKey:NSHTTPCookieValue];
}
}
if (![cookieProperties objectForKey:NSHTTPCookiePath]) {
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
}
return cookieProperties;
}
- (NSHTTPCookie *)cookie{
NSDictionary *cookieProperties = [self cookieProperties];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
return cookie;
}
@end
关于ios - NSHTTPCookieStorage 数组 - 解析值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899893/
我是 IOS 编程的新手,现在正在尝试使用 Swift。一切正常,直到我尝试使用 facebook SDK。我添加了一个新的桥接头文件来导入 facebooksdk,并且在我的 View Contro
我正在使用 NSURLSession 编写一个多用户应用程序,但我无法弄清楚在使用多个 NSURLSession 实例时如何拥有单独的 cookie 存储。 我尝试使用我自己分配/初始化的 NSHTT
如何在多个 iOS 应用程序之间共享 NSHTTPCookieStorage?我希望 MYAPP A 和 MYAPP B 使用相同的 cookie,这样我就可以轻松地在它们之间切换。 我在 NSHTT
所以我很好奇 NSHTTPCookieStorage 是跨应用程序持久存在,还是仅在当前应用程序本地存在。我希望在另一个应用程序中收集的一些 cookie 可以在搜索应用程序中访问。是这样吗?谢谢!
我有一个数组 (NSHTTPCookieStorage) 中的数据... NSARRAY *httpCookies = [[NSHTTPCookieStorage sharedHTTPCookieSt
我在 NSURLResponse 的 Set-Cookie header 中收到 cookie,但是 [[NSHTTPCookieStorage sharedHTTPCookieStorage] co
var httpCookie:NSHTTPCookieStorage=NSHTTPCookieStorage.sharedHTTPCookieStorage(); println(httpCookie
我正在开发一个应用程序,服务器会给我一个 cookie 来识别用户。 我的后续请求需要有该 cookie 才能获得用户期望的响应。我无法理解的是 NSHTTPCookieStorage 的共享实例如何
我的 iPhone 应用程序中的 NSHTTPCookieStorage 遇到了一些奇怪的问题。当我在 Web 服务上调用登录操作时,该服务会发回一个名为“auth”的身份验证 cookie 以及其他
也许我遗漏了一些东西,但是来自Apple's documentation对于 NSHTTPCookieStorage,我不禁想知道它如何安全使用。 这是否意味着 Cookie 存储在 iPhone 上
我正在尝试了解 NSHTTPCookieStorage 的内部结构,以便能够混合一些方法来从 Safari 的 cookie 存储中获得单独的存储,据我所知,这是任何非 hacky 方式都不可能实现的
可能这是一个愚蠢的问题,但我想为相同的 url 存储 cookie,但为用户名存储不同的 cookie。如何使用 NSHTTPCookieStorage 来实现?这就是我从响应中存储 cookie 的
问题 正如标题所说,我目前遇到一个问题,即 NSHTTPCookieStorage 在手机重启后至少解锁一次之前在后台初始化时丢失我们应用程序的 cookie。 一旦 cookie 丢失,它们将无法以
我正在努力寻找这方面的确切细节,所以我希望能在这里得到一些帮助。我正在寻找有关 iOS 共享 NSHTTPCookieStorage 的底层存储机制的一些信息: 当使用共享的 NSHTTPCookie
在我们的 iPhone 应用程序中,我们在服务器通信期间使用两个 cookie。一种是短 session cookie (JSESSION),另一种是长 session cookie (REMEMBE
我正在访问服务器的安全信息,它会根据请求向应用程序发送一堆 cookie。问题是有些 cookie 仅用于 session ,当我使用时: [NSHTTPCookie requestHeaderFie
我想知道什么时候在 NSHTTPCookieStorage 中设置了一个 cookie。是否有更改方法或事件处理程序?我想阻止设置 cookie。 最佳答案 您可以通过以下通知来监听cookie的变化
WKWebView 可以在WKHTTPCookieStorage 中管理自己的cookie,独立于NSHTTPCookieStorage。如何将 cookie 从 WKHTTPCookieStore
有谁知道如何设置 WKWebView 以从 NSHTTPCookieStorage 中选取 cookie? 我尝试通过 WKUserScript 注入(inject) cookie,但它不起作用,因为
我的桌面应用程序连接到托管在 Google App 引擎上的网络应用程序。一旦它通过身份验证,它就会获得一个 authtoken cookie,它会为所有 future 的请求传递该 cookie。一
我是一名优秀的程序员,十分优秀!