Дальнейшее обновление, октябрь 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.
Если вы добавите более подробную информацию о том, как работает схема аутентификации, я могу быть более конкретным.
Update
на основе обновления, чтобы эмулировать форму POST вы просто нужно добавить строки, как:
[request addPostValue:usernameString forKey:@"username"];
[request addPostValue:passwordString forKey:@"password"];
Вы также должны изменить способ создать запрос вместо:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
сделать:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
(Я также забыл упомянуть об этом выше, есть код, который я поставил ранее, использует синхронный запрос, поэтому вы хотите заменить его асинхронным, чтобы избежать блокировки пользовательского интерфейса, как только вы доказали, что он работает.)
Там в рамки JSON для Iphone здесь:
http://code.google.com/p/json-framework/
, который работает хорошо для меня и прост в использовании с ASIHTTPRequest.
Я добавил немного больше объяснения. Приложение не является базовой HTTP-аутентификацией. Это форма, отображаемая на веб-странице, в которой вы вводите свои учетные данные. Я пытаюсь настроить его, чтобы он мог выступать в качестве RESTful API, который я могу аутентифицировать и запрашивать данные (которые будут возвращены в формате JSON). – Andrew
Хорошо, я обновил свой ответ немного подробнее. По существу, все должно быть довольно просто с ASIHTTPRequest. – JosephH
Итак, как только я «отправил» запрос/auth/login, мое приложение iPhone запомнит, что оно аутентифицировано? В браузере есть файлы cookie, которые устанавливаются. Другими словами, теперь, когда я «аутентифицирован», могу ли я сделать другой запрос, требующий, чтобы вы были аутентифицированы? (т. е. GET/users/all) – Andrew