Подтвердить что ты не робот

Управление HTTP файлами на iPhone

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

В моем приложении python я использовал механизм для автоматического управления файлами cookie. Есть ли что-то подобное для Objective C, переносимого на iPhone?

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете использовать класс 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"];

Ответ 3

@zonble ответ работает только в моем localhost; Если сервер не запущен локально, заголовок "Set-Cookie" отсутствует в полях NSDictionary * = [HTTPResponse allHeaderFields];

Наконец, я нашел решение @benzado прекрасно работает. Также смотрите: iphone nsurlconnection читать файлы cookie @Tal Bereznitskey ответ.