Json es un formato compacto de intercambio de datos soportado por librerías en Android SDK. En este post vamos a escribir un par de funciones para entender como recuperar un fichero json de la web de TusPerlas y así de paso avanzar el pŕoximo artículo de nuestra primera aplicación en Android.

 

El código completo (se asume que debes tener permisos de acceso a INTERNET para nuestro AndroidManifest.xml y es conveniente comprobar nuestra conexión antes.)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class lecturaJson extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		String lecturaJsonTusPerlas = lecturaJsonTusPerlas();
try {
			JSONArray jsonArray = new JSONArray(lecturaJsonTusPerlas);
			Log.i(lecturaJson.class.getName(),
					\"Número \" + jsonArray.length());
			for (int i = 0; i < jsonArray.length(); i++) {
				JSONObject jsonObject = jsonArray.getJSONObject(i);
				Log.i(lecturaJson.class.getName(), jsonObject.getString("texto")); // el campo lo recuperamos con el Log
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public String lecturaJsonTusPerlas() {
		StringBuilder builder = new StringBuilder();
		HttpClient cliente = new DefaultHttpClient();
		HttpGet peticionGet = new HttpGet("http://perlas.tunelko.com/json/get_data");
		try {
			HttpResponse respuesta = cliente.execute(peticionGet);
			StatusLine estado = respuesta.getStatusLine();
			int codigoEstado = estado.getStatusCode();
			if (codigoEstado == 200) {
				HttpEntity entidad = respuesta.getEntity();
				InputStream contenido = entidad.getContent();
				BufferedReader lector = new BufferedReader(
						new InputStreamReader(contenido));
				String line;
				while ((line = lector.readLine()) != null) {
					builder.append(line);
				}
			} else {
				Log.e(lecturaJson.class.toString(), "Algo ha salido mal");
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return builder.toString();
	}
}

No hay contenido relacionado



One thought on “Intercambio de datos con JSON en Android SDK

  1. Great, but why don’t you use AsyncTask for downloading data? If you don’t use it your app will shuts down when connection will last to long.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *