quarta-feira, 16 de março de 2011

Tarefas comuns de rede no iOS - Parte 1


Aprenderemos aqui como enviar e receber conteúdo conteúdo de páginas web.
O caminho mais fácil para obter conteúdo HTML de uma página web é usando o método stringWith ContentsOfURL: de NSString.

Obtendo cotações de ações no Yahoo!finance

1. No Xcode, crie uma nova aplicação baseada em visualização e salve como GetContentWeb.

2. Abra o GetContentWebViewController.h, adicione uma variável de instância que será responsável por mostrar o conteúdo obtido:

UITextView *resultadosView;

3. Mude para o GetContentWebViewController.m, e em ViewDidLoad adicione o código abaixo:



CGRect resultadoFrame = CGRectMake(10, 10, 300, 100);

resultadosView = [[UITextView alloc] initWithFrame:resultadoFrame];

resultadosView.font = [UIFont systemFontOfSize:14.0];

[self.view addSubview:resultadosView];

    [super viewDidLoad];



No ViewDidLoad foi criado um UITexView que será usado para mostrar o cotação das ações.

Adicione mais isso em ViewDidLoad:

NSString *symbol = @"AAPL+GOOG";
NSString *urlString = [NSString stringWithFormat:@"http://finance.yahoo.com/d/quotes.csv?s=%@&f=sndlllyr",symbol];

Com esse código criamos uma string que contém o código para a página Yahoo!finance, symbol é usado para armazenar os termos da consulta, em urlString é usado o método stringWithFormat para acrescentar symbol a string de busca.

Adicione mais código abaixo:

NSURL *url = [NSURL URLWithString:urlString];
NSString *cotacao = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
resultadosView.text = cotacao;

Com essa porção de código você cria um objeto NSURL chamado url usando urlString criado anteriormente e com o método após a variável quotes pegamos o resultado formatado em UTF8 e passamos para a string quotes e exibimos esse resultado no nosso rótulo criado lá no início, lembra?

No método dealloc lembre-se de libear a variável alocada para a label:

[resultadosView release];

Abaixo nosso código completo:


#import "GetContentWebViewController.h"

@implementation GetContentWebViewController


- (void)viewDidLoad {
NSLog(@"começou");
CGRect resultadoFrame = CGRectMake(10, 10, 300, 100);
resultadosView = [[UITextView alloc] initWithFrame:resultadoFrame];
resultadosView.font = [UIFont systemFontOfSize:14.0];
[self.view addSubview:resultadosView];
NSString *symbol = @"AAPL+GOOG";
NSString *urlString = [NSString stringWithFormat:@"http://finance.yahoo.com/d/quotes.csv?s=%@&f=sndlllyr",symbol];
NSURL *url = [NSURL URLWithString:urlString];
NSString *cotacao = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
resultadosView.text = cotacao;
    NSLog(@"Terminou");
}




- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}




- (void)dealloc {
[resultadosView release];
    [super dealloc];
}

@end
Repare que no viewDidLoad há o método NSLog tanto no início quanto no fim, isso vai te dar no terminal de Debug uma noção do tempo que leva até o sistema carregar a URL, se experimentar mudar a URL para qualquer coisa estranha verá que ele não fornece erros no terminal.
Apesar de estar usando exemplo do livro tive que pesquisar a URL com os parâmetros necessários para obter dados do Yahoo!finance.
Compile e aparecerá no simulador como abaixo:




Nenhum comentário:

Postar um comentário