Blog para desarrollo de aplicaciones en Android, aprende paso a paso como crear aplicaciones.

Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación para mostrarle publicidad personalizada y realizar análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más

Como crear un WebService para Android utilizando Visual Studio y SQL Server

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.


Android Studio - WebService Visual Studio SQL Server

Crearemos nuestro proyecto en Visual Studio. 
Android Studio - WebService Visual Studio SQL Server
Crearemos un proyecto web vacio.

Android Studio - WebService Visual Studio SQL Server
Añadiremos un archivo.
Android Studio - WebService Visual Studio SQL Server
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.
Android Studio - WebService Visual Studio SQL Server

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.


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.

Android Studio - WebService Visual Studio SQL Server
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.

Android Studio - WebService Visual Studio SQL Server
Aquí recibirá los parámetros y nos hará una devolución de los datos.

Android Studio - WebService Visual Studio SQL Server
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.
Android Studio - WebService Visual Studio SQL Server
Añadiremos estas lineas de codigo.
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.

Android Studio - WebService Visual Studio SQL Server
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.

Android Studio - WebService Visual Studio SQL Server

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" />

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.

Android Studio - WebService Visual Studio SQL Server
Android Studio - WebService Visual Studio SQL Server
Y listo.

Gracias por tu tiempo.

Compartelo para promover el conocimiento.

Stephen Hawking

Físico Teórico, Cosmólogo y Autor

Si 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í)


5 comentarios:

  1. 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

    me da ese error cuando intento conectarme desde el movil real al webservice

    ResponderEliminar
    Respuestas
    1. 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.

      Eliminar
    2. Hola 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.

      Eliminar
  2. Hola, no puedo descargar los proyectos, como hago para que se me puedan descargar?? Ayuda porfa

    ResponderEliminar
  3. Hola podrias compartir el proyecto de ejemlo

    ResponderEliminar

x

Registrate!

Curso Android Español

Curso Kotlin Español

eBook Free Android Studio

Noticias y Eventos

¡Directamente a tu INBOX!

Le enviaremos nuestros recursos gratis. Para obtener nuestro contenido nuevo, únase a nuestra comunidad. No te molestaremos enviando información inútil. ¡No te pierdas ninguna actualización, mantente conectado! Recuerda verificar tu correo electronico.

Ingrese su dirección de correo electrónico:

Entregado por FeedBurner