TechNet
Products
IT Resources
Downloads
Training
Support
Products
Windows
Windows Server
System Center
Microsoft Edge
Office
Office 365
Exchange Server
SQL Server
SharePoint Products
Skype for Business
See all products »
Resources
Channel 9 Video
Evaluation Center
Learning Resources
Microsoft Tech Companion App
Microsoft Technical Communities
Microsoft Virtual Academy
Script Center
Server and Tools Blogs
TechNet Blogs
TechNet Flash Newsletter
TechNet Gallery
TechNet Library
TechNet Magazine
TechNet Wiki
Windows Sysinternals
Virtual Labs
Solutions
Networking
Cloud and Datacenter
Security
Virtualization
Updates
Service Packs
Security Bulletins
Windows Update
Trials
Windows Server 2016
System Center 2016
Windows 10 Enterprise
SQL Server 2016
See all trials »
Related Sites
Microsoft Download Center
Microsoft Evaluation Center
Drivers
Windows Sysinternals
TechNet Gallery
Training
Expert-led, virtual classes
Training Catalog
Class Locator
Microsoft Virtual Academy
Free Windows Server 2012 courses
Free Windows 8 courses
SQL Server training
Microsoft Official Courses On-Demand
Certifications
Certification overview
Special offers
MCSE Cloud Platform and Infrastructure
MCSE: Mobility
MCSE: Data Management and Analytics
MCSE Productivity
Other resources
Microsoft Events
Exam Replay
Born To Learn blog
Find technical communities in your area
Azure training
Official Practice Tests
Support options
For business
For developers
For IT professionals
For technical support
Support offerings
More support
Microsoft Premier Online
TechNet Forums
MSDN Forums
Security Bulletins & Advisories
Not an IT pro?
Microsoft Customer Support
Microsoft Community Forums
Sign in
Home
Library
Wiki
Learn
Gallery
Downloads
Support
Forums
Blogs
Resources For IT Professionals
United States (English)
Россия (Pусский)
中国(简体中文)
Brasil (Português)
Skip to locale bar
Editing: Criando e Consumindo Web API - Parte 2 (pt-BR)
Wiki
>
TechNet Articles
>
Criando e Consumindo Web API - Parte 2 (pt-BR)
Article
Edit
History
Title
<html> <body> <p>Olá pessoal, hoje eu vou falar de Web API parte 2 da forma bem simples e fácil. No artigo anterior criamos a parte do banco de dados e exportamos os dados em forma de XML ou Json. Agora vamos consumir esse Web API usando a linguagem C# .NET. </p> <p> Antes de começar a falar da parte 2, peço para que leia a parte 1 localizada no endereço abaixo. Essa parte 2 é exatamente continuação da parte 1 e sem ela você não vai entender o que falarei aqui.</p> <p>Artigo anterior: <a href="http://ecode10.com/artigo/1725/criando-e-consumindo-web-api-parte-1"> http://ecode10.com/artigo/1725/criando-e-consumindo-web-api-parte-1</a></p> <p><strong> </strong></p> <p><strong>Utilizado neste artigo:</strong></p> <p>Ferramenta Visual Studio 2012</p> <p>Linguagem de programação C#</p> <p>Tecnologia utilizada, WebForm, Web API, Rest e Json.</p> <p> Nessa parte 2 vou mostrar como pegar os dados do Web API de forma correta preencher um GridView ou DataList dinamicamente, ou seja, vamos usar o método GET. Outros artigos eu mostro como fazer PUT, DELETE e POST dos dados.</p> <p> Você pode consumir o método GET usando o mesmo projeto, mas o ideal é criar um novo projeto do tipo WebForm para consumir o Rest. Como falei anteriormente na parte 1, o Web API veio para substituir o Web Service que se tornou lento mediante a nova tecnologia. </p> <p><strong>Primeiro passo</strong></p> <p> Criar um novo projeto do tipo WebForm, o mais comum entre os desenvolvedores de software, usando a linguagem C# ou VB. Dentro da página default.aspx e na parte de HTML, coloquei o objeto GridView. Esse objeto traz apenas o nome do usuário vindo do Rest consumido. </p> <p><span>Listagem 1 - Lista de usuário</span></p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"><</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">asp</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">:</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">GridView</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> ID</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="GridView1"</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> runat</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="server"</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> AutoGenerateColumns</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="false"></span> </p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"><</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">Columns</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">></span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"><</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">asp</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">:</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">BoundField</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> DataField</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="Id"</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> HeaderText</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="Id"</span> <span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"> /></span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"><</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">asp</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">:</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">BoundField</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> DataField</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="Nome"</span> <span style="background-color:white; font-family:Consolas; color:#ff0000; font-size:9.5pt"> HeaderText</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">="Nome"</span> <span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"> /></span> </p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"></</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">Columns</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">></span> </p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"></</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">asp</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">:</span><span style="background-color:white; font-family:Consolas; color:#800000; font-size:9.5pt">GridView</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">></span></p> <p> Agora temos que preencher esse GridView com os dados vindo do Rest criado no artigo parte 1. </p> <p><strong>Segundo passo</strong></p> <p> O segundo passo é feito dentro da linguagem C#, neste caso o default.aspx.cs. Primeiro declarei duas variáveis. Uma do System.Uri e outra do System.Net.Http.</p> <p>Listagem 2 - Declaração de variável</p> <p><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">HttpClient</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> client;</span></p> <p><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">Uri</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> usuarioUri;</span></p> <p> Agora no construtor do método é necessário indicar o endereço do site e o tipo de retorno, que no nosso caso é o Json. </p> <p><span>Listagem 3 – Construtor</span></p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">public</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> _default()</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">{</span></p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">if</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> (client == </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">null</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">)</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> {</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> client = </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">new</span> <span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt"> HttpClient</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">();</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> client.BaseAddress = </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">new</span> <span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt"> Uri</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">(</span><span style="background-color:white; font-family:Consolas; color:#a31515; font-size:9.5pt">"http://localhost:1020"</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">);</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> client.DefaultRequestHeaders.Accept.Add(</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">new</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> System.Net.Http.Headers.</span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">MediaTypeWithQualityHeaderValue</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">(</span><span style="background-color:white; font-family:Consolas; color:#a31515; font-size:9.5pt">"application/json"</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">));</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">}</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">}</span></p> <p> Note que na listagem 3, o tipo do cabeçalho do Rest é o application/json baseado no HttpClient(). </p> <p> No Page_Load da classe default.cs eu chamei outro método chamado getAll. Listagem 4. O método getAll() busca através do Web API o link e os dados para preencher o GridView. </p> <p><span>Listagem 4 - Page_Load</span></p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">protected</span> <span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"> void</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> Page_Load(</span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">object</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> sender, </span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">EventArgs</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> e)</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">{</span></p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">if</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> (!Page.IsPostBack)</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> {</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> getAll();</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">}</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">}</span></p> <p> Passando para o método getAll(), a chamada da url se torna simples e os dados retornados são pegos através de um Enumerable. <span>Listagem 5.</span></p> <p>Listagem 5 - Chamando o rest e preenchendo o grid</p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">private</span> <span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt"> void</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> getAll()</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">{</span></p> <p><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">//chamando a api pela url</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> System.Net.Http.</span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">HttpResponseMessage</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> response = client.GetAsync(</span><span style="background-color:white; font-family:Consolas; color:#a31515; font-size:9.5pt">"api/usuario"</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">).Result;</span></p> <p> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">//se retornar com sucesso busca os dados</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">if</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> (response.IsSuccessStatusCode)</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> {</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">//pegando o cabeçalho</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> usuarioUri = response.Headers.Location;</span></p> <p> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">//Pegando os dados do Rest e armazenando na variável usuários</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">var</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> usuarios = response.Content.ReadAsAsync<</span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">IEnumerable</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"><</span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">Usuario</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">>>().Result;</span></p> <p> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt"> //preenchendo a lista com os dados retornados da variável</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> GridView1.DataSource = usuarios;</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> GridView1.DataBind();</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> }</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#2b91af; font-size:9.5pt">//Se der erro na chamada, mostra o status do código de erro.</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#0000ff; font-size:9.5pt">else</span> </p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> Response.Write(response.StatusCode.ToString() + </span><span style="background-color:white; font-family:Consolas; color:#a31515; font-size:9.5pt">" - "</span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> + response.ReasonPhrase);</span></p> <p><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt"> </span><span style="background-color:white; font-family:Consolas; color:#000000; font-size:9.5pt">}</span></p> <p> Em cada linha da listagem 5 existe uma explicação simplificada do que é feito. O resultado final dessa chamada é o grid preenchido rapidamente. Imagem 1.</p> <a href="http://social.technet.microsoft.com/wiki/cfs-file.ashx/__key/communityserver-wikis-components-files/00-00-00-00-05/7128.web_2D00_api_2D00_parte_2D00_2.png"><img alt="" src="http://social.technet.microsoft.com/wiki/resized-image.ashx/__size/200x0/__key/communityserver-wikis-components-files/00-00-00-00-05/7128.web_2D00_api_2D00_parte_2D00_2.png" style="border-bottom:0px solid; border-left:0px solid; border-top:0px solid; border-right:0px solid"></a><br> Imagem 1 - Grid preenchido pelo Rest<br> <br> <span class="Apple-tab-span" style="white-space:pre"></span>Espero que tenha gostado e em breve publico mais um artigo falando e mostrando como excluir, incluir e pesquisar algum dado usando o Rest e Web API da Microsoft. Qualquer dúvida, pode entrar em contato pelo site <strong><a href="http://www.mauriciojunior.org/">www.mauriciojunior.org</a></strong>. <br> <div><br> </div> </body> </html>
Comment
Tags
Please add 7 and 8 and type the answer here: