Опрос внешнего сервера из приложения при его запуске
Я новичок в 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;
}