urlAsString = [urlAsString stringByAppendingString:@"?param1=First"];

urlAsString = [urlAsString stringByAppendingString:@"&param2=Second"];

NSURL *url = [NSURL URLWithString: urlAsString];

NSMutableURLRequest *urlRequest = [NSMutableURLRequest

requestWithURL: url];

[urlRequest setTimeoutInterval:30.0f];

[urlRequest setHTTPMethod:@"GET"];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[NSURLConnection

sendAsynchronousRequest: urlRequest

queue: queue

completionHandler: ^(NSURLResponse *response,

NSData *data,

NSError *error) {

if ([data length] >0 &&

error == nil){

NSString *html = [[NSString alloc] initWithData: data

encoding: NSUTF8StringEncoding];

NSLog(@"HTML = %@", html);

}

else if ([data length] == 0 &&

error == nil){

NSLog(@"Nothing was downloaded.");

}

else if (error!= nil){

NSLog(@"Error happened = %@", error);

}

}];

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Переменная urlAsString в данном коде представляет собой сущность Xcode, которая называется «шаблон переменной». Если скопировать этот код и вставить его в ваш проект Xcode, переменная будет отображена так, как показано на рис. 11.1. Перед запуском этого примера кода убедитесь, что присвоили вышеупомянутой переменной валидный URL.

Рис. 11.1. Заменяемая переменная в Xcode

Единственный момент, который необходимо учитывать, заключается в том, что перед первым параметром ставится вопросительный знак, а перед всеми последующими — амперсанд (&). Вот и все! Теперь вы можете пользоваться методом HTTP GET и отправлять параметры в строке запроса.

<p>11.6. Отправка запросов HTTP POST с применением NSURLConnection</p><p>Постановка задачи</p>

Необходимо вызвать метод HTTP POST веб-сервера и, возможно, передать параметры (в теле HTTP или в строке запроса) определенной веб-службе.

<p>Решение</p>

Как и в случае с методом GET, можно использовать метод POST с применением NSURLConnection. Следует явно задать метод нашего URL как POST.

<p>Обсуждение</p>

Напишем простое приложение, которое может создать асинхронное соединение и отослать ряд параметров в виде строки запроса и нескольких параметров в теле HTTP-запроса по URL:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSString *urlAsString = <# Здесь укажите URL веб-сервера #>;

urlAsString = [urlAsString stringByAppendingString:@"?param1=First"];

urlAsString = [urlAsString stringByAppendingString:@"&param2=Second"];

NSURL *url = [NSURL URLWithString: urlAsString];

NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL: url];

[urlRequest setTimeoutInterval:30.0f];

[urlRequest setHTTPMethod:@"POST"];

NSString *body = @"bodyParam1=BodyValue1&bodyParam2=BodyValue2";

[urlRequest setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]];

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Похожие книги