i Я создаю свое первое приложение для iPad. У меня есть веб-приложение, которое я хотел бы аутентифицировать и извлекать данные из RESTful способом.
Если вы откроете URL в браузере ( https://myapp.com/auth/login ), Вы получите форму для ввода вашего имени пользователя и пароля. Я думал, что смогу установить учетные данные для входа в данные публикации запроса и отправить данные.
Сайт использует HTTPS для входа в систему, чтобы учетные данные не передавались в виде простого текста через Интернет.
Как создать безопасное HTTPS-соединение для передачи учетных данных? Будет ли это помнить, что я вошел в систему для будущих запросов? Каков наилучший способ сделать это?
Дальнейшее обновление, октябрь 2013 г.
Хотя в то время, когда я писал этот ответ, ASIHTTPRequest широко поддерживался, это уже не так. Это не рекомендуется для новых проектов - вместо этого используйте NSURLConnection напрямую или используйте AFNetworking.
В AFNetworking есть метод [httpClient setAuthorizationHeaderWithUsername: username password: password];
для HTTP-аутентификации, и создать форму в стиле POST также легко - см. AFNetworking Post Request для этого.
Исходный ответ:
Многие люди используют класс ASIHTTPRequest для работы с http и https на iPhone / iPad, так как он имеет множество полезных функций, которые сложно или долго реализовать с помощью встроенных классов. :
http://allseeing-i.com/ASIHTTPRequest/
Начиная с самого простого уровня, вы должны начать с чего-то вроде:
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
NSLog(@"response = %@", response);
}
Если вы используете HTTP-аутентификацию, ASIHTTPRequest автоматически запросит у пользователя имя пользователя и пароль.
ЕСЛИ вы используете другую форму аутентификации, вам, вероятно, потребуется запросить имя пользователя и пароль у пользователя самостоятельно и отправить их в виде значения POST или настраиваемого HTTP-заголовка, а затем ответ может включать токен в ответ JSON или XML, или он может установить cookie.
Если вы добавите больше деталей о том, как работает схема аутентификации, я могу быть более конкретным.
Обновление
На основе обновления, чтобы эмулировать форму POST, вам просто нужно добавить такие строки, как:
[request addPostValue:usernameString forKey:@"username"];
[request addPostValue:passwordString forKey:@"password"];
Вам также нужно будет изменить способ создания запроса вместо:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
do :
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
(Я также забыл упомянуть об этом выше, там код, который я поместил ранее, использует синхронный запрос, поэтому вы захотите заменить его асинхронным, чтобы избежать блокировки пользовательского интерфейса, как только вы докажете, что он работает. )
Здесь есть структура JSON для iphone:
http://code.google.com / p / json-framework /
, который мне подходит и прост в использовании с ASIHTTPRequest.