Android WebService SQL Server Visual Studio
Hola amigos.En esta ocasión aprenderemos a crear una conexión utilizando como WebService un proyecto de Visual Studio del cual consumiremos los recursos que vayamos creando.
Para ello tenemos que tener nuestro Visual Studio instalado.
Descargar ( Aquí )
Teniendo instalado nuestro Visual Studio comenzaremos a crear un proyecto sigue los pasos a continuación.
Pido disculpas por utilizar una versión vieja de Visual Studio. Pero el ejemplo es funcional en las versiones que siguen.
Crearemos nuestro proyecto en Visual Studio.
Crearemos un proyecto web vacio.
Añadiremos un archivo.
Teniendo listo esto creamos un archivo de tipo Web Service SQL Server. Colocamos un nombre y presionamos Ok.
Ahora nuestra base de datos SQL Server vamos a crear una tabla con varios campos y a la cual le agregaremos unos cuantos datos.
Teniendo lista nuestra base de datos seguiremos con la consulta en nuestro WebService.
Teniendo listo vamos a crear en nuestro proyecto de Visual Studio una clase. La cual quedara de la siguiente forma.
Teniendo listo vamos a crear en nuestro proyecto de Visual Studio una clase. La cual quedara de la siguiente forma.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebService
{
public class Cliente
{
//--Variables declaradas
public String Nombre { get; set; }
public String Clave { get; set; }
//--Constructor de las variables
public Cliente()
{
this.Nombre = "";
this.Clave = "";
}
//--Asignar los valores en las variables que se reciben
public Cliente(String nombre, String clave)
{
this.Nombre = nombre;
this.Clave = clave;
}
}
}
Teniendo listo esto vamos a crear nuestro metodo en el webservice.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
namespace WebService
{
/// <summary>
/// Summary description for WebService1
/// </summary>
/// --Nombre del metodo namespace
[WebService(Namespace = "http://webservice.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
//--Cadena de Conexion
SqlConnection con = new SqlConnection("Data Source=NombreSourcePC;Initial Catalog=NombreBaseDatos;Integrated Security=True");
SqlDataAdapter adp;
//--WebMetodo de tipo Cliente
[WebMethod]
//--Recibe los valores que se enviaran desde el dispositivo
public Cliente[] login(String Nombre, String Clave)
{
//--Abrir conexion
con.Open();
//--Consulta a la tabla de clientes
string sql = "SELECT * from Clientes where Nombre='" + Nombre + "' and Clave='" + Clave + "' ";
//--Conexion y consulta
SqlCommand cmd = new SqlCommand(sql, con);
//--Ejecutar conexion y almacenar resultados en el reader
SqlDataReader reader = cmd.ExecuteReader();
//--Crear lista de funcion tipo Cliente
List<Cliente> lista = new List<Cliente>();
//--Recorrer informacion
while (reader.Read())
{
//--Asignar valores obtenidos de la consulta
lista.Add(
new Cliente(reader.GetString(1),
reader.GetString(2)));
}
//--Cerrar conexion
con.Close();
//--Retornar la lista de los valores obtenidos
return lista.ToArray();
}
}
}
Ejecutamos nuestro proyecto para obtener el resultado.
En el navegador aparecerá nuestro webservice con los métodos que vayamos creando, la siguiente ventana nos mostrara los parámetros que el método recibirá desde nuestro dispositivo.
Aquí recibirá los parámetros y nos hará una devolución de los datos.
En el navegador aparecerá nuestro webservice con los métodos que vayamos creando, la siguiente ventana nos mostrara los parámetros que el método recibirá desde nuestro dispositivo.
Aquí recibirá los parámetros y nos hará una devolución de los datos.
Ahora tenemos listo nuestro WebService. Ahora continuaremos con nuestra aplicación en Android Studio.
Creamos un proyecto Android. (Aquí).
Teniendo listo nuestro proyecto nos dirigiremos al archivo. Gradle.
Creamos un proyecto Android. (Aquí).
Teniendo listo nuestro proyecto nos dirigiremos al archivo. Gradle.
Añadiremos estas lineas de codigo.
La dependencia de KSOAP que es la que vamos a utilizar.
La dependencia de KSOAP que es la que vamos a utilizar.
repositories {
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
y
compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
Nos quedaría de la siguiente manera.
Ahora vamos a crear nuestro diseño. Para tener el diseño de la siguiente forma les dejare el proyecto para que lo puedan descargar y modificar lo a su gusto.
Teniendo listo esto vamos a desarrollar el código de nuestra aplicación. Dentro de nuestro MainActivity crearemos el siguiente código.
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.ActivityOptions;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
//--Variables de tipo EditText
private EditText txtNombre;
private EditText txtClave;
//--Variable tipo boton
private Button btnAceptar;
//--Variables tipo string
String nombre,clave;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//---Asignamos los controles a las variables
txtNombre = (EditText)findViewById(R.id.txtNombre);
txtClave = (EditText)findViewById(R.id.txtClave);
//--Evento click del boton
btnAceptar = (Button)findViewById(R.id.btnAceptar);
btnAceptar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//--Obtiene los valores de los edittext
nombre = txtNombre.getText().toString();
clave =txtClave.getText().toString();
//--Ejecuta la clase AsynTask
TareaWSConsulta logins = new TareaWSConsulta();
logins.execute();
}
});
}
private String jsonResult;
private class TareaWSConsulta extends AsyncTask<String, Void, String> {
protected String doInBackground(String... params) {
//--URL del webservice namespace
final String NAMESPACE = "http://webservice.org/";
//--IP para conectarse al localhost + el puerto y el nombre del webservice
final String URL="http://10.0.2.2:12753/WebService1.asmx";
//--Nombre dle metodo a consumir
final String METHOD_NAME = "login";
//--URL con el nombre del metodo
final String SOAP_ACTION = "http://webservice.org/login";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//--Enviamos los parametros a consultar al webservice
request.addProperty("Nombre", nombre);
request.addProperty("Clave", clave);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE transporte = new HttpTransportSE(URL);
transporte.debug = true;
try
{
transporte.call(SOAP_ACTION, envelope);
//--OBtiene el resultado
SoapObject resSoap =(SoapObject)envelope.getResponse();
for (int i = 0; i < resSoap.getPropertyCount(); i++)
{
//--Asigna los resultados a la variable por index de posicion en el XML
SoapObject ic = (SoapObject)resSoap.getProperty(i);
jsonResult= ic.getProperty(0).toString();
}
}
catch (Exception e)
{
Log.e("Resultado", e.getMessage());
}
return null;
}
protected void onPostExecute(String result) {
ListDrawer();
}
}
public void ListDrawer(){
//--Redirige al siguiente activity
Intent i = new Intent(MainActivity.this,Inicio.class);
Bundle bundle = new Bundle();
//--Enviamos el valor obtenido al siguiente activity
bundle.putString("nombre", jsonResult);
i.putExtras(bundle);
startActivity(i);
}
}
Teniendo listo nuestro codigo daremos el permiso a nuestro proyecto en el archivo manifest.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET" />
Tienes que leer detenidamente el proyecto para entenderlo a la perfección cualquier duda que tengas déjanos tu comentario y con gusto te ayudaremos.
Ejecutamos la aplicación y este seria el resultado.
Y listo.
Gracias por tu tiempo.
Compartelo para promover el conocimiento.
Stephen Hawking
Físico Teórico, Cosmólogo y AutorSi desea descubrir los secretos del universo, o si simplemente desea seguir una carrera en el siglo 21, la programación básica de computadoras es una habilidad esencial para aprender.
Descargar Android (Aquí)
Descargar WebService (Aquí)
2019-08-29 11:23:06.768 513-1348/com.example.nombredelproyecto E/Resultado: failed to connect to /ipmaquina (port 4x3xx) from /ipcelular (port 3x5x) after 20000ms
ResponderEliminarme da ese error cuando intento conectarme desde el movil real al webservice
Hola amigo cuando inicias el servicio en el Visual Studio revisa el puerto que te muestra en el navegador y eso lo añades a la ip del 10.0.2.2:port. Saludos.
EliminarHola aparece este error: 2019-09-28 22:49:23.564 17657-17847/com.app.webservice E/Resultado: Cleartext HTTP traffic to localhost not permitted. Quisiera saber que debo hacer para establecer la conexión correctamente.
EliminarHola, no puedo descargar los proyectos, como hago para que se me puedan descargar?? Ayuda porfa
ResponderEliminarHola podrias compartir el proyecto de ejemlo
ResponderEliminar