Получение HTTP-запроса Objective-C iOS 5 - PullRequest
0 голосов
/ 12 ноября 2011

Мне нужно использовать HTTP-запрос от iPhone к PHP-скрипту для приложения, которое я создаю.PHP-скрипт возвращает строку текста.Я видел много людей, говорящих об ASIHTTPRequest, но он не работает под iOS5.Я просматривал документацию Apple Developer, но я не совсем понимаю, как использовать NSURLRequest.Это то, что у меня есть на данный момент:

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] init];
[req setURL:[NSURL URLWithString:@"http://location.of.my.php.script"]];
[req setHTTPMethod:@"GET"];
[req setValue:postLength forHTTPHeaderField:@"Content-Length"];
[req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[req setHTTPBody:postData];

По сути, я хочу сделать HTTP-запрос, отправить пример URL: "http://hellothere.com/myscript.php?options=Type&type=foo затем в моем PHP-скрипте есть: if ($_GET ['option'] == 'Type') {// сделать что-то и вернуть строку}

Может кто-нибудь указать мне правильное направление относительно того, как использовать NSMutableURLRequest или NSURLConnection? Или кто-то может указатьмне очень простой учебник?

Спасибо

1 Ответ

1 голос
/ 12 ноября 2011

Я использую ASIHTTPRequest, как это на iOS 5:

Вам необходимо реализовать методы ASIHTTPRequestDelegate. Сделайте запрос вот так:

ASIFormDataRequest *asiRequest = [ASIFormDataRequest requestWithURL:[NSURL    URLWithString:urlString]];

[asiRequest setPostValue:somPostValue];

asiRequest.delegate = self;
[asiRequest startAsynchronous];

А потом делегаты, куда вы распаковываете ответ. Это предполагает, что ответ находится в формате JSON.

- (void)requestFinished:(ASIHTTPRequest *)request {       
    // Parse Data
    NSString *responseString = [request responseString];
    NSDictionary *parsedData = [responseString JSONValue];
    // Do whatever you want with this data
}

- (void)requestFailed:(ASIHTTPRequest *)request {
    NSError *error = [request error];
    NSLog(@"requestFailed: %@", error);
}
...