Как отправить запрос GET на PHP в iOS

Привет, у меня проблема с отправкой запроса GET на PHP, тот же PHP отлично работает при запуске в веб-браузере, вот фрагмент кода PHP и Obj-C PHP.

$var1=$_GET['value1'];
$var2=$_GET['value2'];

когда я вызываю это в браузере, например http://sample.com/sample.php?value1=hi&value2=welcome работает нормально, но из obj c я не смог получить успешное obj C

 NSString *url =[NSString stringWithFormat:@"http://sample.com/sample.php"];
    NSData *data = [@"sample.php" dataUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"%@",url);
    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    [req setHTTPMethod:@"GET"];
    [req setHTTPBody:data];
    NSURLConnection *connection = [[[NSURLConnection alloc] initWithRequest:req delegate:self]autorelease];
    [connection start];

Пожалуйста помоги?


person Satheesh    schedule 02.08.2012    source источник
comment
Вы нигде не указали в своем запросе значение1 и значение2. Что вы можете сделать, так это просто добавить их в URL-адрес как таковой @sample.com/sample.php ?value1=%@, valueString   -  person Siddharth Dhingra    schedule 02.08.2012
comment
Спасибо @SiddharthDhingra, это сработало!!   -  person Satheesh    schedule 03.08.2012


Ответы (1)


Проблема в том, что вы устанавливаете HTTPBody (вызывая setHTTPBody для вашего объекта запроса), в то время как GET-запросы не имеют тела, вместо этого переданные данные должны быть добавлены к URL-адресу. Таким образом, чтобы имитировать запрос, который вы сделали в своем браузере, это будет просто так.

NSString *url =[NSString stringWithFormat:@"http://sample.com/sample.php?value1=hi&value2=welcome"];
NSLog(@"%@",url);
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[req setHTTPMethod:@"GET"]; // This might be redundant, I'm pretty sure GET is the default value
NSURLConnection *connection = [[[NSURLConnection alloc] initWithRequest:req delegate:self]autorelease];
[connection start];

Конечно, вы должны правильно закодировать значения вашей строки запроса (см. http://madebymany.com/blog/url-encoding-an-nsstring-on-ios для примера), чтобы убедиться, что ваш запрос действителен.

person Karl-Johan Sjögren    schedule 02.08.2012
comment
Запрос GET может иметь тело, и большинство серверов поддерживают это. Представьте себе случай, когда вам нужно выполнить запрос GET к ресурсу с фильтром, превышающим максимальное количество разрешенных байтов в URL-адресе. - person Guillermo; 16.04.2013