Руководящие Cookie HTTP на iPhone

Я хочу портировать приложение Python, которое использование механизирует для iPhone. Это приложение должно войти в веб-страницу и использование cookie сайта для движения в другие страницы на том сайте для получения некоторых данных.

С моим приложением Python я использовал, механизируют для автоматического управления cookie. Действительно ли там что-то подобно для Objective C, который является портативным к iPhone?

Спасибо за любую справку.

34
задан benzado 20 April 2010 в 15:34
поделиться

2 ответа

NSURLConnection предоставляет вам управление cookie бесплатно. Из Руководства по программированию системы загрузки URL:

Система загрузки URL автоматически отправляет все сохраненные файлы cookie, соответствующие запросу NSURLRequest, если в запросе не указано не отправлять файлы cookie. Аналогично, файлы cookie, возвращаемые в NSURLResponse, принимаются в соответствии с текущей политикой приема файлов cookie.

72
ответ дан 27 November 2019 в 16:01
поделиться

Вы можете использовать класс NSURLConnection для выполнения HTTP-запроса для входа на веб-сайт и получения файла cookie. Чтобы выполнить запрос, просто создайте экземпляр NSURLConnection и назначьте ему объект делегата.

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];

Затем реализуйте метод делегата.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
    NSDictionary *fields = [HTTPResponse allHeaderFields];
    NSString *cookie = [fields valueForKey:@"Set-Cookie"]; // It is your cookie
}

Сохранить или скопировать строку cookie. Если вы хотите выполнить другой запрос, добавьте его в свой HTTP-заголовок вашего экземпляра NSURLRequest.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:@"Cookie"];
44
ответ дан 27 November 2019 в 16:01
поделиться