Дальнейшее обновление, октябрь 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];
сделать:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
(я также забыл упомянуть об этом выше, есть код, который я поместил ранее, использующий синхронный запрос, поэтому вы хотите заменить его на асинхронный, чтобы избежать блокировки пользовательского интерфейса, как только вы докажете, что он работает.)
Здесь есть JSON-фреймворк для iphone:
http://code.google.com/p/json-framework/
, который хорошо работает для меня и прост в использовании с ASIHTTPRequest.