Acceso a Servicios Web en Android
Enviado por Oscar Farinango • 6 de Marzo de 2023 • Documentos de Investigación • 2.727 Palabras (11 Páginas) • 58 Visitas
58 - Acceso a Servicios Web en Android
Hemos visto hasta ahora modos de almacenar datos en forma permanente (archivos de texto, clase SharedPreferences y SQLite), ahora veremos otra manera de Android para almacenar datos en una base de datos en MySQL que estará en en servidor externo
MySQL es una base de datos Open Source, las ventajas que presenta utilizar MySQL tiene un servidor de base de datos ejecutándose en un proceso separado y es relativamente simple su empleo.
Problema:
Confeccionar un programa que permita almacenar los datos de articulos. Crear la tabla Persona y definir los campos nombre, apellido, sexo, pais, provincia, y dirección.
El programa debe permitir:
1 - Carga de persona.
2 - Consulta por la cedula.
3 - Borrado de una persona ingresando su cédula.
4 - Modificación de una persona por medio de su cédula.
Crear un proyecto en Android Studio. Lo primero que haremos es crear el diseño del XML como se muestra en la siguiente interfaz:
[pic 1]
Como vemos disponemos tres EditText y cinco Button:
EditText de tipo "Plain Text" (ID="etNombre", hint="Ingrese Nombre")
EditText de tipo "Plain Text" (ID="etApellido",hint="Ingrese Apellido")
EditText de tipo "Number" (ID="etCedula", hint="Ingrese cedula")
RadioButton (ID="rbtnMasculino")
RadioButton (ID="rbtnFemenino")
Spinner (ID="spPais")
EditText de tipo "Plain Text" (ID="etProvincia", hint="Ingrese provincia")
EditText de tipo " Plain Text " (ID="etDireccion", hint="Ingrese direccion")
Button (ID="btnIngresar", text="Guardar")
Button (ID="btnBuscar", text="Buscar")
Button (ID="btnBorrar", text="Borrar")
Button (ID="btnActualizar", text="Actualizar")
Después configuramos los archivos gradle como se muesta a continuación
En el archivo build.gradle(Module:app) implementar lo siguiente:
implementation 'com.android.volley:volley:1.1.0'
[pic 2]
El código fuente de nuestro Activity es el siguiente:
package ec.edu.intsuperior.formularioos;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private Spinner spinner1;
private EditText nombre,apellido,cedula,provincia,direccion;
private RadioButton masculino,femenino;
private Button btnAgregar,btnBuscar,btnActualizar,btnBorrar;
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner1 = (Spinner) findViewById(R.id.spPais);
String []opciones={"Ecuador","Colombia","Venezuela","Peru"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opciones);
spinner1.setAdapter(adapter);
nombre=(EditText)findViewById(R.id.etNombre);
apellido=(EditText)findViewById(R.id.etApellido);
cedula=(EditText)findViewById(R.id.etCedula);
provincia=(EditText)findViewById(R.id.etProvincia);
direccion=(EditText)findViewById(R.id.etDireccion);
masculino=(RadioButton)findViewById(R.id.rbtnMasculino);
femenino=(RadioButton)findViewById(R.id.rbtnFemenino);
btnAgregar=(Button)findViewById(R.id.btnIngresar);
btnBuscar=(Button)findViewById(R.id.btnBuscar);
btnActualizar=(Button)findViewById(R.id.btnActualizar);
btnBorrar=(Button)findViewById(R.id.btnBorrar);
btnAgregar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ejecutarServico("http://192.168.1.6/formulario/insertardatos.php");
}
});
btnBuscar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buscar("http://192.168.1.6/formulario/buscardatos.php?cedula="+cedula.getText()+"");
}
});
btnActualizar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
actualizar("http://192.168.1.6/formulario/actualizardatos.php?cedula="+cedula.getText()+"");
}
});
btnBorrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
borrar("http://192.168.1.6/formulario/borrardatos.php?cedula="+cedula.getText()+"");
}
});
}
private void ejecutarServico(String URL){
StringRequest stringRequest=new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Operacion exitosa", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(), Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> parametros=new HashMap<String,String>();
parametros.put("nombres",nombre.getText().toString());
parametros.put("apellidos",apellido.getText().toString());
parametros.put("cedula",cedula.getText().toString());
parametros.put("sexo",sexo());
parametros.put("pais",String.valueOf(spinner1.getSelectedItemPosition()));
parametros.put("provincia",provincia.getText().toString());
parametros.put("direccion",direccion.getText().toString());
return parametros;
}
};
requestQueue= Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
public String sexo() {
String sexo="";
if (masculino.isChecked() == true) {
sexo = "Masculino";
} else if (femenino.isChecked() == true) {
sexo = "Femenino";
}
return sexo;
}
private void buscar(String URL){
JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
JSONObject jsonObject = null;
for (int i = 0; i < response.length(); i++) {
try {
jsonObject = response.getJSONObject(i);
nombre.setText(jsonObject.getString("nombres"));
apellido.setText(jsonObject.getString("apellidos"));
cedula.setText(jsonObject.getString("cedula"));
provincia.setText(jsonObject.getString("provincia"));
direccion.setText(jsonObject.getString("direccion"));
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),"Error de conexion",Toast.LENGTH_SHORT).show();
}
}
);
requestQueue=Volley.newRequestQueue(this);
requestQueue.add(jsonArrayRequest);
}
private void actualizar(String URL){
StringRequest stringRequest=new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Operacion exitosa", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(), Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> parametros=new HashMap<String,String>();
parametros.put("nombres",nombre.getText().toString());
parametros.put("apellidos",apellido.getText().toString());
parametros.put("sexo",sexo());
parametros.put("pais",String.valueOf(spinner1.getSelectedItemPosition()));
parametros.put("provincia",provincia.getText().toString());
parametros.put("direccion",direccion.getText().toString());
return parametros;
}
};
requestQueue= Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void borrar(String URL){
StringRequest stringRequest=new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Operacion exitosa", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(), Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> parametros=new HashMap<String,String>();
return parametros;
}
};
requestQueue= Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
...