4

我正在设置(或尝试设置)一个 NSHTTPCookie,如下所示:

+ (void)setCookie {

  NSString* cookieName = @"MyCookieName";
  NSString* cookieValue = @"MyCookieValue";
  NSString* cookieOriginURL = @"www.mycompany.com";
  NSString* cookiePath = @"/";

  NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
  [cookieProperties setObject:cookieName      forKey:NSHTTPCookieName];
  [cookieProperties setObject:cookieValue     forKey:NSHTTPCookieValue];
  [cookieProperties setObject:cookieOriginURL forKey:NSHTTPCookieOriginURL];
  [cookieProperties setObject:cookiePath      forKey:NSHTTPCookiePath];

  [cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:3600] forKey:NSHTTPCookieExpires];

  NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
  [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];

}

调用此方法后,我创建了一个 NSURLRequest:

NSString *urlAddress = @"http//:www.mycompany.com/mobile/home";

//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];

//URL Request Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

NSLog(@"Here's the request: %@", [requestObj description]);

//Load the request in the UIWebView.
[self.webView loadRequest:requestObj];

但输出是:

Here's the request: <NSURLRequest: 0xa33a4d0> { URL: http:www.mycompany.com/mobile/home

我希望看到附加到请求的 cookie 信息,但事实并非如此。

我对 cookie 了解不多,所以我不知道我的代码是否遗漏了什么,或者我只是想念解释输出的含义。

谢谢你的帮助。

4

1 回答 1

2

我怀疑 的描述是否NSURLRequest会提供 cookie 信息。

域是匹配的(cookie 和 URL),因此必须将 cookie 附加到请求中。在触发请求之前执行以下代码,以查看哪些 cookie 与您的请求一起发送。

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for(NSHTTPCookie *cookie in [cookieJar cookiesForURL:url]) {
        NSLog(@"Cookies attached: %@", cookie.description);
}
于 2013-12-04T09:36:16.310 回答