![]() |
![]() |
Neste artigo vou mostrar como acessar um serviço REST no Xamarin Android usando a biblioteca RestSharp no Visual Studio 2015 e a linguagem C#. |
Vamos iniciar com resumo sobre REST...
O que é REST ?
Representational State Transfer (REST) é um estilo de arquitetura para
a construção de serviços na web. As solicitações REST são feitas em HTTP usando
os mesmos verbos HTTP que os navegadores da Web usam para recuperar páginas da
Web e enviar dados para os servidores. Os verbos são:
GET - esta operação é usada para recuperar dados do serviço da web.
POST - esta operação é usada para criar um novo item de dados no serviço
web.
PUT - esta operação é usada para atualizar um item de dados no serviço da
web.
PATCH - esta operação é usada para atualizar um item de dados no serviço
da Web, descrevendo um conjunto de instruções sobre como o item deve ser
modificado.
DELETE - esta operação é usada para apagar um item de dados no serviço
web.
As APIs de serviço da Web que aderem ao REST são chamadas de APIs RESTful e são
definidas usando:
1- Uma URI base.
2- Métodos HTTP, como GET, POST, PUT, PATCH ou DELETE.
3- Um tipo de mídia para os dados, como JavaScript Object Notation (JSON).
A simplicidade do REST ajudou a torná-lo o principal método para acessar
serviços da Web em aplicativos móveis.
Além do REST podemos usar também os seguintes recursos para gerenciar serviços na web:
Para mostrar como podemos usar os recursos do REST para acessar informações na web vou criar um exemplo bem simples que acessa informações do site : http://www.androidcodec.com usando os recursos da biblioteca RestSharp que você pode consultar neste link: http://restsharp.org/.
Recursos usados:
Visual Studio Community 2015 ou Xamarin Studio
RestSharp - http://restsharp.org/
Emulador Android virtual ou físico (veja como emular usando o Vysor)
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no VS Community 2015
Abra o VS 2015 Community e clique em New Project;
Selecione a linguagem Visual C# e o template Android -> Blank App(Android)
Informe o nome um nome adequado ao seu projeto, eu vou usar o nome Droid_RestApi, e clique no botão OK;
Abra o arquivo Main.axml na pasta Resources/layout no modo Designer e inclua a partir da ToolBox os seguintes controles:
Abaixo vemos o leiaute no emulador do Xamarin e ao lado o respectivo código XML gerado :
![]() |
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px"
android:background="@android:color/holo_orange_light">
<Button
android:text="Acessar RestApi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnAcessar" />
<TextView
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/txtResposta"
android:textColor="@android:color/black"
android:background="#d3ffce" />
</LinearLayout>
</ScrollView>
|
Vamos agora incluir uma referência a biblioteca RestSharp em nosso projeto.
No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;
Selecione a guia Browse e digite restsharp. Localize a biblioteca e instale-a no projeto:
Agora podemos usar os recursos da RestSharp.
Abra o arquivo MainActivity na raiz do projeto e incluir o código abaixo neste arquivo.
using Android.App;
using Android.Widget;
using Android.OS;
using RestSharp;
namespace Droid_RestApi
{
[Activity(Label = "RestAPI", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
ProgressDialog dialog;
TextView txtv1;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button>(Resource.Id.btnAcessar);
txtv1 = FindViewById<TextView>(Resource.Id.txtResposta);
button.Click += Button_Click;
}
private void Button_Click(object sender, System.EventArgs e)
{
dialog = new ProgressDialog(this);
dialog.SetMessage("Aguarde...");
dialog.SetProgressStyle(ProgressDialogStyle.Spinner);
dialog.Show();
var cliente = new RestClient("http://www.androidcoded.com");
var request = new RestRequest("/", Method.GET);
request.AddHeader("Content-type", "application/json");
cliente.ExecuteAsync(request, response =>
{
RunOnUiThread(delegate
{
dialog.Dismiss();
var responseFacebook = response.Content;
txtv1.Text = responseFacebook.ToString();
Toast.MakeText(this, "reposta", ToastLength.Long);
});
});
}
}
}
|
Vamos entender o código :
Usamos um ProgressDialog() para exibir uma caixa diálogo e uma mensagem de texto mostrando um indicador de progresso da operação:
dialog = new ProgressDialog(this);
dialog.SetMessage("Aguarde...");
dialog.SetProgressStyle(ProgressDialogStyle.Spinner);
dialog.Show();
A seguir criamos uma instância da classe RestClient() passando a url de destino para o construtor da classe para que a comunicação seja estabelecida. Depois criamos uma instância da classe RestRequest() informando o tipo de requisição (GET) e definimos o cabeçalho da requisição como sendo do tipo 'application/json':
var cliente = new RestClient("http://www.androidcoded.com");
var request =
new RestRequest("/", Method.GET);
request.AddHeader("Content-type", "application/json");
Concluindo usamos o método ExecuteAsync() onde vamos usar o método runOnUiThread para ter acesso a thread principal do Android e obter e exibir a resposta no TextView:
cliente.ExecuteAsync(request, response =>
{
RunOnUiThread(delegate
{
dialog.Dismiss();
var responseSite = response.Content;
txtv1.Text = responseSite.ToString();
Toast.MakeText(this, "reposta", ToastLength.Long);
});
});
Executando o projeto usando o emulador Genymotion iremos obter o seguinte resultado:
![]() |
![]() |
Pegue o
projeto aqui :
Droid_RestApi.zip
(sem as referências)
Porque a palavra da cruz é loucura para os que perecem; mas para nós, que
somos salvos, é o poder de Deus.
Porque está escrito: Destruirei a sabedoria dos sábios, E aniquilarei a
inteligência dos inteligentes.
1 Coríntios 1:18,19
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.App.AlertDialog/
https://developer.android.com/reference/android/app/Activity.html
https://developer.xamarin.com/api/type/Android.Widget.ProgressBar/