Manual Tema Dam Grupo 2 2014 i
-
Upload
julio-corpus -
Category
Documents
-
view
215 -
download
0
description
Transcript of Manual Tema Dam Grupo 2 2014 i
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
0
UNIVERSIDAD SAN PEDRO
INGENIERA INFORMTICA Y DE SISTEMAS
VII CICLO
USO DE JSON EN ANDROID
Desarrollo de Aplicaciones Mviles
DOCENTE: Ing. Segundo Edwin Cieza Mostacero
ALUMNOS:
Gutierrez Mendoza Kenedy Johnson
Meja Vasquez Golbher
Sulln Pizarro Henry
2014 CHIMBOTE PER
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
1
NDICE
NDICE .......................................................................................................................................... 1
JSON en Android .......................................................................................................................... 2
1. Qu es JSON? ..................................................................................................................... 2
2. Valores JSON ........................................................................................................................ 2
3. Mtodos JSON...................................................................................................................... 2
4. Clases que proporciona Java ................................................................................................ 3
5. Demostracin 1 (Uso de JSON en Java): .............................................................................. 3
Paso 1. Crear una aplicacin Android ............................................................................... 3
Paso 2. Disear la aplicacin Android ............................................................................... 7
Paso 3. Programar la aplicacin: ....................................................................................... 7
Paso 4. Crear un AVD y ejecutar la aplicacin: ............................................................... 10
6. Demostracin 2 (Uso de JSON en Java con base de datos): .............................................. 14
Paso 1. Disear la base de datos: .................................................................................... 14
Paso 2. Crear un servicio web: ........................................................................................ 15
Paso 3. Publicar el servicio web: ..................................................................................... 23
Paso 4. Configurar permisos en la base de datos: .......................................................... 30
Paso 5. Probar el servicio ya publicado utilizando nuestra direccin IP: ........................ 34
Paso 6. Crear la aplicacin Android que consuma los resultados en JSON: ................... 36
Paso 7. Ejecutar la aplicacin .......................................................................................... 48
Bibliografa ................................................................................................................................. 49
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
2
JSON en Android
1. Qu es JSON?
Es el acrnimo en ingls de JavaScript Object Notation, es un formato ligero para el
intercambio de datos en aplicaciones web. JSON tiene la ventaja de que no requiere el
uso de XML. (Sacristn, 2012)
JSON (JavaScript Object Notation) es un formato de intercambio de datos ligero. Es fcil
para los seres humanos a leer y escribir. Es fcil para las mquinas para analizar y
generar. Se basa en un subconjunto del lenguaje de programacin JavaScript, estndar
ECMA-262 3rd Edition -. 12 1999 JSON es un formato de texto que es completamente
independiente del lenguaje pero utiliza convenciones que son familiares para los
programadores de la C-familia de lenguajes, incluyendo C, C + +, C #, Java, JavaScript,
Perl, Python, y muchos otros. Estas propiedades hacen de JSON un lenguaje ideal-el
intercambio de datos.
2. Valores JSON
Los tipos de valores en JSON son los siguientes:
Un string (entre comillas simples)
Un nmero (entero o float)
Un booleano (true o false)
Un objeto (entre llaves {} )
Un array (entre corchetes [] )
Null
3. Mtodos JSON
get (String name): Devuelve el valor en la forma de tipo Object.
getInt (String name): Devuelve el valor entero especificado por la clave.
getLong (String name): Devuelve valor entero largo especificado por la clave.
getDouble (String name): Devuelve el valor doble especificado por la clave.
getString (String name): Devuelve el valor en la forma de tipo String.
getBoolean (String name): Devuelve el valor booleano especificado por la clave.
length(): Devuelve el nmero de asignaciones de nombre / valor en este objeto.
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
3
4. Clases que proporciona Java
JSONArray
JSONObject
JSONStringer
JSONTokenizer
5. Demostracin 1 (Uso de JSON en Java):
Esta demostracin se basa en cmo utilizar las clases JSONObject y JSONArray para
agregar y quitar elementos a una cadena con formato JSON.
Paso 1. Crear una aplicacin Android
1.1) Creacin de una aplicacin Android:
File
New
Android Application Project
Figura 1: Crear aplicacin Android (men File)
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
4
Ingresar el nombre para la aplicacin:
Figura 2: Crear aplicacin: Ingresar el nombre
Clic en siguiente:
Figura 3: Clic en siguiente
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
5
Establecer el icono (lo dejaremos por defecto):
Figura 4: Establecer icono
Crear una actividad en blanco:
Figura 5: Crear actividad en blanco
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
6
Ingresar el nombre para la actividad:
Figura 6: Ingresar nombre para la actividad y clic en Finish
1.2) Ya tenemos nuestra aplicacin creada con una actividad en blanco:
Figura 7: Aplicacin Android creada y lista para programar
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
7
Paso 2. Disear la aplicacin Android
2.1) Disear en el archivo activity_main.xml lo siguiente:
Figura 8: Diseo de la actividad
Paso 3. Programar la aplicacin:
3.1) Programar en el MainActivity.java lo siguiente:
package com.usp.jsoncadena;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
Aqu va un TextView, pero sin texto
EditText
ID: etCodigo
ID: etNombre
ID: etAutor
TextView
ID: tvTitulo
ID: tvCodigo
ID: tvLibro
ID: tvAutor
ID: tvAlerta
ID: tvMostrar
ID: tvResultado
Button
ID: btnAgregar
ID: btnNuevo
ID: btnQuitar
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
8
public class MainActivity extends Activity {
EditText etNombre;
EditText etAutor;
EditText etCodigo;
Button btnAgregar;
TextView tvResultado;
Button btnNuevo;
Button btnQuitar;
JSONArray lista = new JSONArray();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Referencia a las vistas
etNombre = (EditText) findViewById(R.id.etNombre);
etAutor = (EditText) findViewById(R.id.etAutor);
etCodigo = (EditText) findViewById(R.id.etCodigo);
btnAgregar = (Button) findViewById(R.id.btnAgregar);
etAutor = (EditText) findViewById(R.id.etAutor);
tvResultado = (TextView) findViewById(R.id.tvResultado);
btnNuevo = (Button) findViewById(R.id.btnNuevo);
btnQuitar = (Button) findViewById(R.id.btnQuitar);
// Codigo para agregar un elemento a una cadena JSON
btnAgregar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JSONObject obj = new JSONObject();
String codigo, nombre, autor;
nombre = etNombre.getText().toString();
autor = etAutor.getText().toString();
codigo = etCodigo.getText().toString();
try {
obj.put("Autor", autor);
obj.put("Nombre", nombre);
obj.put("Codigo", codigo);
lista.put(obj);
} catch (JSONException e) {
e.printStackTrace();
}
tvResultado.setText(lista.toString());
}
});
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
9
// Codigo para quitar un elemento de una cadena JSON
btnQuitar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String codigo;
codigo = etCodigo.getText().toString();
// llenar otro json excluyendo segun el codigo:
JSONArray aux = new JSONArray();
try {
for (int i = 0; i < lista.length(); i++) {
JSONObject obj2 = lista.getJSONObject(i);
if (!obj2.getString("Codigo").equals(codigo)) {
aux.put(obj2);
}
}
lista = new JSONArray();
lista = aux;
tvResultado.setText(lista.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
});
// Codigo para limpiar las vistas
btnNuevo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
etNombre.setText("");
etAutor.setText("");
etCodigo.setText("");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
10
Paso 4. Crear un AVD y ejecutar la aplicacin:
4.1) Iniciar el Android Virtual Device Manager y hacer clic en el botn New:
Figura 9: Iniciando el Android Virtual Device Manager
4.2) Realizar la siguiente configuracin (de ejemplo) para el dispositivo y hacer clic en el botn OK
Figura 10: Creacin de un nuevo Dispositivo Virtual Android
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
11
4.3) Seleccionar el dispositivo y hacer clic en el botn Start para iniciarlo.
Figura 11: Inicializacin de un dispositivo virtual
4.4) Hacer clic en el botn Launch, para visualizar el dispositivo.
Figura 12: Visualizar el dispositivo virtual
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
12
4.5) Finalmente se puede visualizar nuestro dispositivo virtual en pantalla:
Figura 13: Interfaz de un Dispositivo Virtual Android
Arrastrar hacia
arriba para activar
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
13
4.6) Ejecutar la aplicacin:
Figura 14: Ejecutar aplicacin
Figura 15: Aplicacin en funcionamiento
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
14
6. Demostracin 2 (Uso de JSON en Java con base de datos):
Paso 1. Disear la base de datos:
6.1) Disear la siguiente base de datos con nombre LibrosBD:
Figura 16: Diseo de la base de datos LibrosBD
6.2) Procedimientos almacenados
Procedimiento: Consultar libros por editorial
CREATE PROCEDURE Pa_ListaLibros (@EditorialID int)
AS
BEGIN
SELECT lib.LibroID,
lib.Titulo,
aut.Nombre AS [Autor],
lib.Anio,
lib.Precio
FROM Libros lib
INNER JOIN Autor aut
ON lib.AutorID = aut.AutorID
INNER JOIN Editorial ed
ON lib.EditorialID = ed.EditorialID
WHERE ed.EditorialID = @EditorialID
END
GO
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
15
Procedimiento almacenado: Listar Editoriales
CREATE PROCEDURE Pa_ListaEditoriales
AS
BEGIN
SELECT ed.EditorialID,
ed.Nombre
FROM Editorial ed
END
Paso 2. Crear un servicio web:
2.1) Crear nuevo proyecto en Visual Studio:
Abrir Visual Studio 2010 y hacer clic en Archivo Nuevo Proyecto.
Figura 17: Diseo de base de datos
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
16
Seleccionar: Aplicacin web vaca de ASP .NET.
Ingresar un nombre para el servicio web y clic en Aceptar
Figura 18: Crear una aplicacin ASP .NET vaca
2.2) Aadir un nuevo servicio web:
Figura 19: Crear un nuevo webservice
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
17
2.3) Cdigo del servicio web en C#:
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Web.Services;
namespace ProyectoJSON
{
///
/// Descripcin breve de WServiceJSON
///
[WebService(Namespace = "http://usp.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio Web desde un script,
// usando ASP.NET AJAX, quite la marca de comentario de la lnea siguiente.
// [System.Web.Script.Services.ScriptService]
public class WServiceJSON : WebService
{
// Cdigo para el acceso a datos desde SQL Server:
private const string ConexionString = "Data Source=.;Initial Catalog=LibrosDB;"
+ "Integrated Security=True";
private SqlCommand CreateCommand(string procedureName)
{
var cmd = new SqlCommand(procedureName)
{
Connection = new SqlConnection(ConexionString),
CommandType = CommandType.StoredProcedure
};
return cmd;
}
// Mtodo para listar editoriales:
[WebMethod]
public string ListaEditoriales()
{
StringBuilder json = new StringBuilder();
SqlCommand cmd = CreateCommand("Pa_ListaEditoriales");
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
json.Append("{\"Editoriales\":[");
int count = 0;
while (dr.Read())
{
json.AppendFormat("{{\"EditorialID\":\"{0}\",\"Nombre\":\"{1}\"}},",
dr["EditorialID"], dr["Nombre"]);
count++;
}
cmd.Connection.Close();
if (count > 0)
json[json.Length - 1] = ']';
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
18
else
json.Append(']');
json.Append('}');
return json.ToString();
}
// Mtodo para listar libros a partir de un codigo de editorial
[WebMethod]
public string ListaLibros(int editorialID)
{
StringBuilder json = new StringBuilder();
SqlCommand cmd = CreateCommand("Pa_ListaLibros");
cmd.Parameters.AddWithValue("editorialID", editorialID);
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
json.Append("{\"Libros\":[");
int count = 0;
while (dr.Read())
{
json.AppendFormat("{{\"Titulo\":\"{0}\"," +
"\"Autor\":\"{1}\"," +
"\"Precio\":\"{2}\"}},",
dr["Titulo"], dr["Autor"], dr["Precio"]);
count++;
}
cmd.Connection.Close();
if (count > 0)
json[json.Length - 1] = ']';
else
json.Append(']');
json.Append('}');
return json.ToString();
}
} // Cierra clase
} // Cierra namespace
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
19
2.4) Pruebas antes de publicar (Mtodo ListaEditoriales): Presionar la tecla F5 para ejecutar el proyecto.
En el navegador se muestran los mtodos implementados en la clase WServiceJSON
Figura 20: Ejecutar el servicio web
Al realizar clic en la opcin ListaEditoriales, aparece la pantalla para invocar su
funcionalidad.
Figura 21: Pantalla de ejecucin del mtodo ListaEditoriales
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
20
Este es el resultado al ejecutar el mtodo ListaEditoriales, est en formato JSON
Figura 22: Pantalla Resultados de la ejecucin del mtodo ListaEditoriales
Se puede validar el resultado en www.json.parser.online.fr
Figura 23: Parsing del resultado en JSON
Copiar y pegar, para probar
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
21
2.5) Pruebas antes de publicar (Mtodo ListaLibros): Presionar la tecla F5 para ejecutar el proyecto.
En el navegador se muestran los mtodos implementados en la clase WServiceJSON
Figura 24: Ejecutar el servicio web
Se puede apreciar el resultado de la ejecucin del mtodo en JSON.
Figura 25: Pantalla Resultados de la ejecucin del mtodo ListaLibros
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
22
Se puede validar el resultado en www.json.parser.online.fr
Figura 26: Parsing del resultado en JSON
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
23
Paso 3. Publicar el servicio web:
3.1) Crear el directorio WServiceJSON en C:\Inetpub\wwwroot
Figura 27: Crear directorio WService en wwwroot
3.2) Abrir el Administrador de IIS y crear un grupo de aplicaciones:
Figura 28: Administrador de IIS
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
24
3.3) Crear el grupo de aplicaciones JsonAppPool:
Figura 29: Crear grupo de aplicaciones en el Administrador de IIS
Figura 30: Grupo de aplicaciones creado en el Administrador de IIS
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
25
3.4) Convertir en aplicacin nuestra carpeta creada en wwwroot :
Figura 31: Convertir nuestro directorio WServiceJSON en aplicacin
Figura 32: Seleccionar un grupo de aplicaciones para nuestra aplicacin
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
26
Figura 33: Seleccionar el grupo de aplicaciones JsonAppPool para la aplicacin
Figura 34: Aplicacin web en IIS lista para publicar nuestro Web Service en l
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
27
3.5) Publicar la aplicacin desde el Visual Studio:
Figura 35: Publicar el proyecto
Figura 36: Configurar la publicacin del proyecto
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
28
Figura 37: Seleccionar la opcin WServiceJSON para publicar nuestro proyecto
Figura 38: Realizar la publicacin de nuestro Servicio Web
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
29
Figura 39: Publicacin realizada
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
30
Paso 4. Configurar permisos en la base de datos:
4.1) Crear el usuario IIS APPPOOL\JsonAppPool (el mismo que creamos en el IIS):
Ejecutar el siguiente cdigo en SQL Server
EXEC sys.sp_grantlogin 'IIS APPPOOL\JsonAppPool'
USE LibrosDB
EXEC sys.sp_grantdbaccess 'IIS APPPOOL\JsonAppPool'
Figura 40: Crear el usuario 'IIS APPPOOL\JsonAppPool en SQL Server 2012
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
31
4.2) Asignar permisos de ejecucin de los procedimientos almacenados a nuestro usuario IIS APPPOOL\JsonAppPool :
Figura 41: Asignar permisos al usuario creado
Figura 42: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
32
Figura 43: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
Figura 44: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
33
Figura 45: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
Figura 46: Asignar permisos de nuestro usuario a los procedimientos almacenados en SQL
Y hacemos lo mismo para el procedimiento almacenado Pa_ListaLibros
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
34
Paso 5. Probar el servicio ya publicado utilizando nuestra direccin IP:
5.1) Ejecutar el servicio web mediante direccin IP
Figura 47: Ejecutar el servicio web desde el navegador mediante direccin IP
Figura 48: Ejecucin del mtodo ListaEditoriales
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
35
Figura 49: Resultado de la ejecucin del mtodo ListaEditoriales
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
36
Paso 6. Crear la aplicacin Android que consuma los resultados en JSON:
6.1) Crear nueva aplicacin Android: File, New, Android Application Project
Figura 50: Crear aplicacin Android (men File)
6.2) Crear nueva aplicacin Android:
Figura 51: Crear aplicacin: Ingresar el nombre
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
37
Figura 52: Clic en siguiente
Figura 53: Establecer icono
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
38
Figura 54: Crear actividad en blanco
Figura 55: Ingresar nombre para la actividad y clic en Finish
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
39
6.3) Aplicacin creada con una actividad en blanco incluida:
Figura 56: Aplicacin Android creada y lista para programar
6.4) Disear la aplicacin:
Figura 57: Diseo de la actividad
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
40
Cdigo de la actividad activity_main.xml:
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
41
android:paddingBottom="1dp"
android:paddingLeft="2dp"
android:paddingTop="1dp"
android:text="@string/tv_col_titulo"
android:textColor="#356A9F"
android:textSize="12sp" />
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
42
6.5) Programar la aplicacin: Para trabajar en comunicacin con el servicio web creado debemos aadir a la
aplicacin la librera ksoap2, se puede descargar desde: Descargar KSOAP2
Figura 58: Adjuntar la librera Ksoap2 a nuestra aplicacin Android
Cdigo de la clase ActivityMain.java:
package com.usp.demojson;
import java.io.IOException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpResponseException;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
43
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableLayout.LayoutParams;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
// Clase MainActivity
public class MainActivity extends Activity {
// Variables para los controles
Context _context;
private Spinner spin_editorial;
private TableLayout tb_libros;
private int [] editorialID_list;
private String [] editorial_list;
private int editorial_count;
// Evento onCreate para inicializar la Actividad
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_context = getApplicationContext();
cargarSpinnerOrdenes();
tb_libros = (TableLayout) findViewById(R.id.tb_libros_detail);
spin_editorial = (Spinner) findViewById(R.id.spin_editorial);
spin_editorial.setOnItemSelectedListener(
spinEditorial_OnItemSelectedListener);
}
// Ejecuta el metodo cargarTablaLibros cada vez que cambia el elemento
// seleccionado del spinner spinEditorial
OnItemSelectedListener spinEditorial_OnItemSelectedListener =
new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent,
View view, int pos, long id) {
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
44
if (editorial_count > 0) {
cargarTablaLibros(editorialID_list[pos]);
}
}
@Override
public void onNothingSelected(AdapterView arg0) {
}
};
// Muestra los datos de los libros segn editorial en un TableLayout
public void cargarTablaLibros(final int editorialID) {
Thread nt = new Thread() {
String result = "";
@Override
public void run() {
// Parameters:
final String NAMESPACE = "http://usp.org/";
final String URL = "http://192.168.1.55/WServiceJSON/WServiceJSON.asmx";
final String METHOD_NAME = "ListaLibros";
final String SOAP_ACTION = "http://usp.org/ListaLibros";
// Envelope:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapSerializationEnvelope.VER11);
envelope.dotNet = true;
// Soap object:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("editorialID", editorialID);
envelope.setOutputSoapObject(request);
// Transport:
HttpTransportSE transporte = new HttpTransportSE(URL);
try {
transporte.call(SOAP_ACTION, envelope);
Object resultado_xml = envelope.getResponse();
result = resultado_xml.toString();
} catch (HttpResponseException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (XmlPullParserException ex) {
ex.printStackTrace();
}
// Perform operation:
runOnUiThread(new Runnable() {
@Override
public void run() {
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
45
// JSON Parsing
JSONObject json_data;
JSONArray precios;
int precios_count;
try {
json_data = new JSONObject(result);
precios = (JSONArray) json_data.get("Libros");
precios_count = precios.length();
if (precios_count > 0) {
try {
int match = LayoutParams.MATCH_PARENT;
int wrap = LayoutParams.WRAP_CONTENT;
// LayoutParams (width, height, weigth);
LayoutParams row_layout = new LayoutParams(match, wrap, 1);
TableRow.LayoutParams layout_det1 = new TableRow.LayoutParams(
wrap, match, 0.4f);
TableRow.LayoutParams layout_det2 = new TableRow.LayoutParams(
wrap, match, 0.3f);
layout_det1.setMargins(0, 0, 1, 1);
layout_det2.setMargins(0, 0, 1, 1);
tb_libros.removeAllViews();
for (int k = 0; k < precios_count; k++) {
JSONObject content = precios.getJSONObject(k);
// Parametros:
TextView txt_det1 = new TextView(MainActivity.this);
TextView txt_det2 = new TextView(MainActivity.this);
TextView txt_det3 = new TextView(MainActivity.this);
txt_det1.setBackgroundColor(Color.WHITE);
txt_det1.setPadding(2, 2, 1, 1);
txt_det1.setText(content.getString("Titulo"));
txt_det1.setTextSize(11f);
txt_det2.setBackgroundColor(Color.WHITE);
txt_det2.setPadding(2, 2, 1, 1);
txt_det2.setText(content.getString("Autor"));
txt_det2.setTextSize(11f);
txt_det3.setBackgroundColor(Color.WHITE);
txt_det3.setPadding(2, 2, 1, 1);
txt_det3.setText(content.getString("Precio"));
txt_det3.setTextSize(11f);
TableRow row_detail = new TableRow(MainActivity.this);
row_detail.addView(txt_det1, layout_det1);
row_detail.addView(txt_det2, layout_det2);
row_detail.addView(txt_det3, layout_det2);
tb_libros.addView(row_detail, row_layout);
}
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
46
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
};
nt.start();
}
// Muestra los datos de las editoriales en el spinner spinEditorial
public void cargarSpinnerOrdenes() {
Thread nt = new Thread() {
String result = "";
@Override
public void run() {
// Parameters:
final String NAMESPACE = "http://usp.org/";
final String URL = "http://192.168.1.55/WServiceJSON/WServiceJSON.asmx";
final String METHOD_NAME = "ListaEditoriales";
final String SOAP_ACTION = "http://usp.org/ListaEditoriales";
// Envelope:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapSerializationEnvelope.VER11);
envelope.dotNet = true;
// Soap object:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
envelope.setOutputSoapObject(request);
// Transport:
HttpTransportSE transporte = new HttpTransportSE(URL);
try {
transporte.call(SOAP_ACTION, envelope);
Object resultado_xml = envelope.getResponse();
result = resultado_xml.toString();
JSONObject json_data = new JSONObject(result);
JSONArray ordenes = (JSONArray) json_data.get("Editoriales");
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
47
editorial_count = ordenes.length();
if (editorial_count > 0) {
editorialID_list = new int[editorial_count];
editorial_list = new String[editorial_count];
for (int i = 0; i < ordenes.length(); i++) {
JSONObject detail = ordenes.getJSONObject(i);
editorialID_list[i] = detail.getInt("EditorialID");
editorial_list[i] = detail.getString("Nombre");
}
}
} catch (HttpResponseException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (XmlPullParserException ex) {
ex.printStackTrace();
} catch (JSONException ex) {
ex.printStackTrace();
}
// Perform operation:
runOnUiThread(new Runnable() {
@Override
public void run() {
if (editorial_count > 0) {
ArrayAdapter adaptador = new ArrayAdapter(
MainActivity.this, android.R.layout.simple_list_item_1,
editorial_list);
spin_editorial.setAdapter(adaptador);
} else {
Toast.makeText(_context, "No hay editoriales que mostrar.",
Toast.LENGTH_LONG).show();
}
}
});
}
};
nt.start();
}
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
48
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Paso 7. Ejecutar la aplicacin
7.1) Realizar los pasos para crear y ejecutar un dispositivo virtual en las pginas 10 a 12 de este tutorial.
7.2) Resultados ejecucin de la aplicacin:
Figura 59: Ejecucin de nuestra aplicacin que utiliza JSON para recuperar datos desde SQL Server 2012
-
UNIVERSIDAD SAN PEDRO JSON EN ANDROID
49
Bibliografa
Aydin, M. (2012). Android 4: New Features for Application Development. Birmingham, UK:
Packt Publishing.
Sacristn, C. R. (2012). Programacin en Android.
Link de descarga:
http://1drv.ms/1ofC9p8