Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy...
Transcript of Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy...
![Page 1: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/1.jpg)
Acesso a Internet
![Page 2: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/2.jpg)
Acesso a Rede • Para escrever uma aplicação que suporte
acesso à rede, o manifesto deve ter as permissões e filtros adequados.
• android.permission.INTERNET
• Permite abrir sockets de rede.
• android.permission.ACCESS_NETWORK_STATE
• permite para acessar informações sobre redes.
• ACTION_MANAGE_NETWORK_USAGE
• (introduzido no Android 4.0) indica que seu aplicativo define uma atividade que oferece opções para controlar o uso de dados.
2
![Page 3: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/3.jpg)
3
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.networkusage"
...>
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
...>
...
<activity android:label="SettingsActivity" android:name=".SettingsActivity">
<intent-filter>
<action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
![Page 4: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/4.jpg)
Acesso à Internet
• Sockets
• Utilizar apenas quando for criado protocolo próprio
• Protocolo HTTP
• Permite usar APIs prontas
• java.net
• Apache Jakarta Commons
• WebServices
• REST
• SOAP 4
![Page 5: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/5.jpg)
Sockets
• Conexão com a Internet de baixo nível.
• Apenas TCP/IP e UDP
• Classes
• Socket
• DataOutputStream
• DataInputStream
5
![Page 6: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/6.jpg)
HTTP API
• Classes
• HttpClient
• HttpGet, HttpPost
• HttpResponse
• HttpEntity
• Exemplo: HttpClient
6
![Page 7: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/7.jpg)
HTTP • DefaultHttpClient
• Projeto Apache.
• AndroidHttpClient:
• subtipo do DefaultHttpClient já configurado para valores otimizados no Android.
• não é mais recomendado utilizar estas classes, porque a equipe do Google não dá manutenção a essa implementação.
• HttpUrlConnection,
• que é desenvolvido e suportado pelo Google.
7
![Page 8: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/8.jpg)
Exemplo
8
![Page 9: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/9.jpg)
JSON x XML
• JSON e XML são formatos para a notação de dados a serem transmitidos;
• A maior e mais importante diferença entre eles nesse momento, é que o XML acaba ocupando muito mais espaço que o JSON quando representam o mesmo objeto.
• XML usa uma tag para identificar o inicio e o final de cada nó.
• O JSON é fortemente recomendado quando estamos falando de dispositivos móveis, por consumir menos banda da conexão de internet do usuário. 9
![Page 10: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/10.jpg)
10
![Page 11: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/11.jpg)
JSON (JavaScript Object Notation)
• JSON ganhou muita força como o formato mais utilizado no retorno de webservices, devido a sua simplicidade em comparação com XML.
• Android possui bibliotecas padrão para lidar com JSON:
• JSONObject: lida com um objeto em JSON e
• JSONArray: usada em arrays de objetos JSO
11
![Page 12: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/12.jpg)
Transformando JSON em Objetos Java (Native JSON)
12
{
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
"id": "1",
"nome": "Alexandre Dumas"
}
![Page 13: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/13.jpg)
Transformando JSON em Objetos Java (Google GSON)
13
{
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
"id": "1",
"nome": "Alexandre Dumas"
}
![Page 14: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/14.jpg)
JSON (JavaScript Object Notation)
• JSON ganhou muita força como o formato mais utilizado no retorno de webservices, devido a sua simplicidade em comparação com XML.
• Android possui bibliotecas padrão para lidar com JSON.Existem duas classes que são utilizadas com este propósito, JSONObject e JSONArray.
• A primeira serve para lidar com umobjeto em JSON, enquanto a segunda é usada em arrays
• de objetos JSON.
14
![Page 15: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/15.jpg)
ExemploJSON
{ "id": "0001", "name": "Curso de Android", "about": "www.facom.ufu.br - contato: Prof. Bacalá", "info": "Programação para Dispositivos Móveis usando Android", "location": { "city": "Uberlândia", "country": "Brasil", "street": "Campus Santa Mônica - Lab B4 - Bloco B", "zip": "38400.000" }, "website": "http://www.facom.ufu.br/~bacala/ANDROID", }
15
![Page 16: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/16.jpg)
Exemplo TextView nameText = ( TextView ) findViewById (R.id.name_text ); TextView siteText = ( TextView ) findViewById (R.id.site_text ); TextView addressText = ( TextView ) findViewById (R.id.address_text ); TextView cityText = ( TextView ) findViewById (R.id.city_text ); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll()-.build(); StrictMode.setThreadPolicy ( policy ); String response = makeRequest ("http://www.facom.ufu.br/~bacala/ANDROID/exemploJSON); try { JSONObject json = new JSONObject ( response ); String name = json.getString ("name"); String site= json.getString (“website"); String address = json.getJSONObject ("location").getString ("street"); String city = json.getJSONObject ("location").getString ("city"); nameText.setText ( name ); siteText.setText ( getString (R.string.website_label , site)); addressText.setText ( getString (R.string.address_label , address )); cityText.setText ( getString (R.string.city_label , city )); } catch ( JSONException e) { e.printStackTrace (); }
16
![Page 17: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/17.jpg)
makeRequest
private String makeRequest ( String urlAddress ) { HttpURLConnection con = null ; URL url = null ; String response = null ; try { url = new URL ( urlAddress ); con = ( HttpURLConnection ) url.openConnection (); response = readStream ( con.getInputStream ()); } catch ( Exception e) { e.printStackTrace (); } finally { con.disconnect (); } return response ; }
17
![Page 18: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/18.jpg)
readStream private String readStream ( InputStream in) { BufferedReader reader = null ; StringBuilder builder = new StringBuilder (); try { reader = new BufferedReader (new InputStreamReader (in)); String line = null ; while (( line = reader.readLine ()) != null ) { builder.append ( line + "\n"); } } catch ( IOException e) { e.printStackTrace (); } finally { if ( reader != null ) { try { reader.close (); } catch ( IOException e) { e.printStackTrace (); } } } return builder.toString (); }
18
![Page 19: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/19.jpg)
Executando operações de rede em um segmento separado
• Operações de rede podem implicar em atrasos imprevisíveis. Para evitar que isso cause uma má impressão do usuário, sempre execute operações de rede em um segmento separado da UI.
• O AsyncTask fornece uma das formas mais simples para disparar uma nova tarefa a partir do segmento.
19
![Page 20: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/20.jpg)
AsyncTask
• Encapsula em uma interface simples o uso de threads.
• Deve implementar obrigatoriamente o método doInBackground(), que é exatamente a tarefa que está sendo executada em background.
• Caso necessário alguma atualização na interface, é só sobrescrever o método onPostExecute(). Tudo que estiver dentro deste método é executado na UI thread.
• O método onPreExecute() é executado antes do doInBackground() e também é executado na UI thread.
20
![Page 21: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/21.jpg)
Usando AsyncTask
• No trecho a seguir, o myClickHandler() chama DownloadWebpageTask().execute (stringUrl)
• DownloadWebpageTask é uma subclasse de AsyncTask e implementa as seguintes:
• doInBackground(): chama downloadURL() que obtém e processa o conteúdo da página web, retornando uma String.
• OnPostExecute (): pega a String retornada e exibe na UI.
21
![Page 22: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/22.jpg)
22
public class HttpExampleActivity extends Activity {
private static final String DEBUG_TAG = "HttpExample";
private EditText urlText;
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
urlText = (EditText) findViewById(R.id.myUrl);
textView = (TextView) findViewById(R.id.myText);
}
// When user clicks button, calls AsyncTask.
// Before attempting to fetch the URL, makes sure that there is a network
connection.
public void myClickHandler(View view) {
// Gets the URL from the UI's text field.
String stringUrl = urlText.getText().toString();
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
new DownloadWebpageTask().execute(stringUrl);
} else {
textView.setText("No network connection available.");
}
}
![Page 23: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/23.jpg)
23
// Uses AsyncTask to create a task away from the main UI thread. This task takes a
// URL string and uses it to create an HttpUrlConnection. Once the connection
// has been established, the AsyncTask downloads the contents of the webpage as
// an InputStream. Finally, the InputStream is converted into a string, which is
// displayed in the UI by the AsyncTask's onPostExecute method.
private class DownloadWebpageTask extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... urls) {
// params comes from the execute() call: params[0] is the url.
try {
return downloadUrl(urls[0]);
} catch (IOException e) {
return "Unable to retrieve web page. URL may be invalid.";
}
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
}
...
![Page 24: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/24.jpg)
24
// Given a URL, establishes an HttpUrlConnection and retrieves
// the web page content as a InputStream, which it returns as
// a string.
private String downloadUrl(String myurl) throws IOException {
InputStream is = null;
// Only display the first 500 characters of the retrieved
// web page content.
int len = 500;
try {
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
int response = conn.getResponseCode();
Log.d(DEBUG_TAG, "The response is: " + response);
is = conn.getInputStream();
// Convert the InputStream into a string
String contentAsString = readIt(is, len);
return contentAsString;
// Makes sure that the InputStream is closed after the app is
// finished using it.
} finally {
if (is != null) {
is.close();
}
}
}
![Page 25: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/25.jpg)
Verificando a conexão de rede
• Antes de seu aplicativo tenta se conectar à rede, ele deve verificar para ver se uma conexão de rede está disponível.
• O dispositivo pode estar fora de alcance de uma rede, ou o usuário pode ter desativado tanto Wi-Fi e acesso a dados móvel.
• Use getActiveNetworkInfo() e isConnected()
25
![Page 26: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/26.jpg)
Verificando a conexão de rede
26
public boolean isOnline() {
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
![Page 27: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/27.jpg)
• Lendo e convertendo em Texto
• Lendo uma imagem
27
// Reads an InputStream and converts it to a String.
public String readIt(InputStream stream, int len)
throws IOException, UnsupportedEncodingException {
Reader reader = null;
reader = new InputStreamReader(stream, "UTF-8");
char[] buffer = new char[len];
reader.read(buffer);
return new String(buffer);
}
InputStream is = null;
...
Bitmap bitmap = BitmapFactory.decodeStream(is);
ImageView imageView = (ImageView) findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap);
Não se esqueça:
<uses-permission android:name ="android.permission.INTERNET"/>
![Page 28: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/28.jpg)
Para maiores informaçoes
http://developer.android.com/training/basics/
network-ops/managing.html
28
![Page 29: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/29.jpg)
WebServices
• Solução usada na integração de sistemas e na comunicação entre aplicações diferentes.
• Torna possível que novas aplicações possam interagir com as já existentes e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.
• Componentes que permitem às aplicações enviar e receber dados em formato XML.
• Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML.
29
![Page 30: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/30.jpg)
WebServices
• REST
• Requisição via URL (GET ou POST)
• Resposta em JSON, XML, etc.
• SOAP- Simple Object Access Protocol
• Requisição e resposta em XML
• invocação remota de um método que necessita especificar o endereço do componente, o nome do método e os argumentos para esse método. • Estes dados são formatados em XML com determinadas
regras e enviados normalmente por HTTP para esse componente. 30
![Page 31: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/31.jpg)
SOAP (Simple Object Access Protocol)
• Invocação remota de um método necessitando
• endereço do componente,
• o nome do método e
• os argumentos para esse método.
• Dados formatados em XML e enviados por HTTP.
• Não define ou impõe qualquer semântica o que o serviço ou o cliente sejam aplicações desenvolvidas por diferentes linguagens.
31
![Page 32: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/32.jpg)
SOAP (Simple Object Access Protocol)
• WSDL descreve os serviços disponibilizados à rede através de XML, que providencia a documentação necessária para se chamar um sistema distribuído e o procedimento para que esta comunicação se estabeleça.
• SOAP especifica a comunicação entre um cliente e um servidor, o WSDL descreve os serviços oferecidos..
32
![Page 33: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/33.jpg)
REST (Transferência de Estado Representativo)
• Técnica de engenharia de software para sistemas distribuídos desenvolvida pelo Roy Fielding.
• Pretendida como uma imagem do design da aplicação se comportará:
• uma rede de websites (um estado virtual),
• onde o usuário progride com uma aplicação selecionando as ligações (transição de estado),
• resultando na página seguinte (que representa o estado seguinte da aplicação) que está sendo transferida ao usuário e apresentada para seu uso.
• Sistemas que seguem os princípios REST são conhecidos como RESTful.
• Foco na URL e nos recursos. 33
![Page 34: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/34.jpg)
REST
• O principal em um Web Service RESTful são as URLs e os recursos.
• Recurso ou entidade, ou seja, um objeto com informação que será representado por meio de um XML.
• a URL para acessar esse recurso será sempre a mesma, porém caso mudemos o método HTTP (GET, POST, PUT e DELETE) o resultado da requisição será diferente.
34
![Page 35: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/35.jpg)
Implementando um simples REST Client no Android
35
![Page 36: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/36.jpg)
Implementando um simples REST Client no Android
36
![Page 37: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/37.jpg)
Implementando um simples REST Client no Android
37
![Page 38: Acesso a Internet - FACOMbacala/ANDROID/10 - AcessoWeb.pdf · distribuídos desenvolvida pelo Roy Fielding. • Pretendida como uma imagem do design da aplicação se comportará:](https://reader034.fdocumentos.tips/reader034/viewer/2022050220/5f65737019b8db4cc71dadc6/html5/thumbnails/38.jpg)
Mais Informações
Utilizando Web Services no Google Android
• http://www.cesar.org.br/site/files/file/
WM23_Android_WebServices.pdf
Como consumir um Web Service pelo Android
• http://www.portalandroid.org/comunidade/viewtopic.php?f=7&t=17465
38