Lendo serviços da web do Android com JSON

Índice

Vamos nos conectar a um servidor, vamos ler e analisar com JSON para que ele retorne informações e, finalmente, vamos salvá-lo no banco de dados do nosso dispositivo.
Para quem não tem um servidor onde realizar os testes, podemos utilizar nosso aparelho e um roteador Wi-Fi para realizar os testes sem problemas.
A primeira coisa que faremos é abrir qualquer programa para editar o código Eclipse, Betbeans ou o que mais gostamos. Em um novo projeto, criaremos uma nova classe chamada JSONManager que terá o seguinte método estático e público.
 JSONObject público estático getJSONfromURL (String url) {InputStream is = null; Resultado da string = ""; JSONObject json = null; tente {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = novo HttpPost (url); Resposta HttpResponse = httpclient.execute (httppost); Entidade HttpEntity = response.getEntity (); is = entity.getContent (); } catch (Exception e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder (); String line = null; while ((line = reader.readLine ())! = null) {sb.append (line + "\ n"); } is.close (); resultado = sb.toString (); } catch (Exception e) {} try {json = new JSONObject (resultado); } catch (JSONException e) {} return json; } 

O método se conectará ao URL que indicamos e tentará ler e analisar a resposta em um JSONObject.
A primeira parte do método abre a conexão http e obtém a resposta em um InputStream. A segunda parte lê a resposta e a analisa com um objeto BufferedReader para finalmente passá-la para uma String.
Esta String é necessária na terceira parte para criar um novo JSONObject que será o que finalmente retornaremos.
Para a próxima parte, criamos uma nova classe, que chamarei de JSONParserLibros. Esta turma se encarregará de ler o serviço ajudado do método anterior e salvá-lo no banco de dados.
Vamos ver como funciona, por exemplo, em um banco de dados de filmes.
 atividade de atividade privada; jObject JSONObject privado; private ProgressDialog progressDialog = null; private Runnable runReadAndParseJSON; public JSONParserPeliculas (Activity a) {activity = a; } public void readAndParseJSON Movies () lança JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (Exceção e) {} [/ size] [/ font]}}; Thread thread = novo Thread (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (atividade, "Baixando informações", "Aguarde", verdadeiro); private void readJSONPeliculas () throws JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("movies")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) lança JSONException {for (int i = 0; i <moviesArray.length (); i ++) {Filme l = new Movies (); l.setIdMovie (movieArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString ("movie")); l.save (atividade); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Em seguida, temos o método público que usaremos para chamar nosso serviço readAndParseJsonLibros. Este método cria um novo thread de execução dentro do qual será feita a chamada ao serviço web, além disso, é iniciada uma janela de diálogo que notificará o usuário de que um download está sendo realizado.
Como podemos ver, coloquei um IP de uma rede local para fazer a chamada para o serviço, que corresponde à equipe onde desenvolvi o serviço web. No momento de testar isso, se você tiver um roteador Wi-Fi, devemos ativar a conexão Wi-Fi em nosso dispositivo Android e conectar-se à nossa rede local para que possamos ter acesso ao serviço. Caso não tenha wi-fi, temos outras opções como montar o serviço web em um servidor na internet, os dados serão baixados usando nossa conexão 3G, ou também podemos testá-lo com o emulador de Android.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave