POST-запрос в Objective-C - PullRequest
       16

POST-запрос в Objective-C

1 голос
/ 01 марта 2012

В поисках в Интернете какого-либо метода для отправки запросов POST в Objective-C я нашел несколько решений.

Вот что у меня есть:

responseData = [NSMutableData new];
NSURL *url = [NSURL URLWithString:@"http://mydomain.com/page.php?"];
NSString *myParameters = [[NSString alloc] initWithFormat:@"str=hello"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

[request setHTTPMethod:@"POST"];
[request setHTTPBody:[myParameters dataUsingEncoding:NSUTF8StringEncoding]];

Ответ, который я получаю, является ошибкой, поскольку переменная POST "str" ​​не была установлена.

Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Вам потребуется:

  • установить заголовок типа содержимого запроса ( "application / x-www-form-urlencoded" ).Вы можете установить заголовок, используя метод setValue:forHTTPHeaderField: экземпляра NSMutableURLRequest.
  • убедитесь, что тело на самом деле является фактически "закодированным URL формы».Пример, который вы приводите, выглядит хорошо, но если вы добавляете другие параметры или значения параметров, содержащие специальные символы, убедитесь, что они правильно закодированы.См CFURLCreateStringByAddingPercentEscapes.
1 голос
/ 01 марта 2012

Похоже, что ваши параметры предназначены для параметров URL (обычно в форме name1=value1&name2=value2).Обычно вы не хотите помещать их в тело HTTP, как вы это делаете в настоящее время.Вместо этого добавьте их к своему URL:

NSString *requestStr = @"hello";
NSString urlString = [NSString stringWithFormat:@"http://mydomain.com/page.php?str=%@", requestStr];
NSURL *url = [NSURL URLWithString:urlString];

NSURLRequest не предоставляет более общего способа сделать это, хотя вы можете посмотреть этот вопрос SO и его ответы для идей посколько людей имеют дело с такого рода требованиями.Существуют также бесплатные библиотеки и / или библиотеки с открытым исходным кодом, которые призваны облегчить кодирование такого рода запросов.

...