2013-11-27 3 views
4

Я устанавливаю (или попытки установить) в NSHTTPCookie следующим образом:Почему, установив NSHTTPCookie, он не добавлен в NSURLRequest?

+ (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, поэтому я не знаю, что-то у меня в коде отсутствует, или если я просто пропустил интерпретацию того, что означает выход.

Спасибо за любую помощь.

ответ

2

Сомневаюсь, что описание NSURLRequest предоставит информацию о файлах cookie.

Домены соответствуют (cookie и URL), поэтому файл cookie должен быть добавлен к запросу. Выполните следующий код перед запуском запроса, чтобы посмотреть, какие файлы cookie отправляются вместе с вашим запросом.

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for(NSHTTPCookie *cookie in [cookieJar cookiesForURL:url]) { 
     NSLog(@"Cookies attached: %@", cookie.description); 
} 
+0

Вы были верны, что в описании NSURLRequest не было информации, которую я ожидал. Это привело меня к моей реальной проблеме. Мой NSHTTPCookieOriginURL и фактический URL-адрес не совпадают. Мне просто пришлось добавить «http: //» в NSHTTPCookieOriginURL. Это сделал трюк. И ваше предложение помогло мне проверить это. Благодарю. – Hap

+1

Рад слышать, что проблема решена. Я не знал, что «http: //» «требуется, чтобы файл cookie соответствовал URL-адресу; Я думал, что только домен должен быть совпадением. Я изучу это немного! – Guven

+1

Кроме того, я уверен, что вы сами это обнаружили, вы можете перебирать все файлы cookie, а не те, которые соответствуют URL-адресу. Для этого просто измените '[cookieJar cookiesForURL: url]' на '[cookieJar cookies]'. – Guven

 Смежные вопросы

  • Нет связанных вопросов^_^