Deletado em 11 de janeiro de 2009

Web Services - Parte 3

Olá pessoal,

Bom, aqui já sabemos o que é um Web Service (WS) e como criar um. Agora iremos descobrir como “consumir” um WS. Vamos utilizar o mesmo projeto.

Ao abrir o projeto vamos adicionar um novo item do tipo Web Form.

Vamos desenhar nossos forms. Colocar um DataList e formatá-lo com tabelas e labels e abaixo vamos colocar dois TextBox, um Button para utilizar o método de soma e um Label para mostrar o resultado.

Depois de tudo criado, vamos adicionar a referencia a nosso WS. Aqui, posso dizer que é a parte mais importante do "consumo".

Na Solution Explorer, temos a pasta References, onde temos as referências para o Framework ou outras bibliotecas. Clicando com o direito em cima da pasta, vamos clicar em “Add a Web Reference...”.

Ao clicar, teremos um Wizard para adicionar a referência de nosso WS.

Vamos entender melhor a tela do Wizard:

1 - Aqui podemos adicionar uma URL de um WS externo, por exemplo, lembra dos desenvolvedores de 2000 noticias? Bom eles devem mandar o link para o WSs deles e devemos adicionar a URL aqui.

2 - WS Local, podendo estar no Projeto (nosso caso no exemplo), em uma aplicação que está na máquina ou em um servidor UDDI.

3 - Colocaremos um nome para nossa referencia e clicamos em “Add Reference”.

No nosso projeto, vamos clicar em “Web services in this solution”. A seguinte tela irá aparecer:

Aqui no lugar do link locais, aparecem os métodos do WS escolhido. Para terminar, como já dito, coloque o nome da referência (o meu WsNetMorc) e adiciona-lá.

Maravilha... Temos uma referência ao nosso WS. Vamos adiciona-lá no Code Behind.

using Noticias.WsNotMorc;

No Load da Página, se não for Post Back (retorno da página) iremos chamar o método CarregarNoticias.

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
          CarregarNoticias();
     }
}

No método CarregarNoticias, vou explicar por passos...

private void CarregarNoticias()
{
     wsNotMorc = new WsNoticias();
     List<Noticia> listaNoticias = new List<Noticia>();
     listaNoticias = wsNotMorc.ListarNoticias();

     DataTable dt = new DataTable("Noticias");
     dt.Columns.Add(new DataColumn("Titulo", Type.GetType("System.String")));
     dt.Columns.Add(new DataColumn("Texto", Type.GetType("System.String")));
     dt.Columns.Add(new DataColumn("Autor", Type.GetType("System.String")));
     dt.Columns.Add(new DataColumn("Data", Type.GetType("System.String")));

     foreach (Noticia noticia in listaNoticias)
     {
          DataRow drow = dt.NewRow();
          drow["Titulo"] = noticia.Titulo;
          drow["Texto"] = noticia.Texto;
          drow["Autor"] = noticia.Autor;
          drow["Data"] = noticia.Data.ToShortDateString();
          dt.Rows.Add(drow);
     }

     dlNoticia.DataSource = dt;
     dlNoticia.DataBind();
}

No começo, adicionaremos uma nova referência para nosso WS. Como sabemos que irá retornar várias notícias, criaremos uma lista de noticias e falar que ela recebera o Web Method ListarNoticias().

Após vamos criar um DataTable e preencher com cada noticia recebida. E, por fim, dizemos que o DataList receberá o DataTable.

Maravilha!!! Mas vamos programar mais um pouco...

Ao clicar no botão Somar (btnSomar)...

try
{
     wsNotMorc = new WsNoticias();
     lblResultado.Text = "O Resultado é: " + wsNotMorc.SomaDoisValores(Convert.ToInt32(txtA.Text), Convert.ToInt32(txtB.Text)).ToString();
}
catch
{
     lblResultado.Text = "Valores Inválidos";
}

...chamaremos uma nova referência ao WS e dizemos que o lblResultado será o que o WebMethod SomaDoisValores() retornar, mas agora eu passo 2 parâmetros, que são nossos 2 TextBox. Colocamos dentro de um Try...Catch para nenhum engraçadinho digitar letras!

Agora sim terminamos, F5 para rodar:

Com isso, terminamos a saga sobre WS... Futuramente irei falar sobre autenticação em WS entre outras coisas... O importante é que está tudo no Lixo!!!

Clique aqui para baixar o projeto final.

Abraços!

1 comentários:

Guilherme Rey disse...

Ae Tonto!

Dev? Só... hauhauha
Ta Dahora =D
E vc, como ta ai na "nova empreitada"?

Eu vou voltar a atualizar o blog essa semana hehe =D

Flws!

Postar um comentário

Jogue sua opinião na lixeira!

Topo