Опрос внешнего сервера из приложения при его запуске

Я новичок в iOS и работаю над приложением, которое работает на реальном устройстве (iPad). Поэтому, когда я запускаю свое приложение на iPad после того, как представление видно, приложение должно иметь возможность опрашивать веб-сервер или что-то в этом роде (без какого-либо взаимодействия с пользователем) и получать некоторую информацию по HTTP, а на основе этой информации я хочу заполнить некоторый текст поля в представлении приложения. Можете ли вы дать мне знать, если это возможно сделать в iOS? Если да, то как и некоторые примеры кода будут высоко оценены.

Благодарю.

1 ответ

Вы можете загрузить информацию через http, используя NSURLConnection в viewWillAppear или viewDidLoad. После загрузки данных, если их XML-анализ с использованием NSXMLParser (или любой другой XML-анализатор для iOS).

//Lets say you have download and process method
- (void)downloadAndProcess
{
    //URL you want to download Info from
    NSURL* url = [NSURL URLWithString:@"http://google.com"];
    //Make a mutable url request
    NSMutableURLRequest* req = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
    NSURLConnection* conn = [NSURLConnection connectionWithRequest:req delegate:self];
    if(conn)
    {
        //NSMutableData receivedData is an instance variable
        receivedData = [[NSMutableData alloc] init];
    }
}

//NSURLConnection Delegate methods here
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [receivedData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [receivedData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"Error downloading data :%@",[error localizedDescription]);
    // release receivedData object when connection fails
    [receivedData release],receivedData = nil;
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // Connection did finish downloading data which you can process based on what your data is
    // release receivedData object once you are done processing it.
    [receivedData release],receivedData = nil;
}
Другие вопросы по тегам