WEBSERVICE WCF CON JSON + SQL SERVER EN C# PARTE 2

Estándar

Hoy seguiremos con la segunda parte del tutorial :

WEBSERVICE WCF CON JSON + SQL SERVER EN C# PARTE 1

6. Metodos GET y POST a la interface IService1.cs

Agregamos :

//Listado Personas

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = “ListadoPersonas”)]
List<Persona_> ListadoPersonas();

//Buscar por ID

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = “Filtroid/{id}”)]
List<Persona_> FiltradoPorid(string id);

//Guardar un registro

[OperationContract]
[WebInvoke(Method = “POST”, ResponseFormat = WebMessageFormat.Json, UriTemplate = “CrearUsuario”)]
wsSQLResult CrearUsuario(Stream JSONdataStream);

Lo cual nos quedaría de esta forma en nuestro proyecto.

Captura de pantalla (9)

 

 

7.  Agregando la implementación de GET y POST a  Service1.svc

Luego de haber agregado los metodos, ahora agregamos la implementacion a cada uno de las acciones que vamos a realizar.

public class Service1 : IService1
{

BdUsuariosDataContext BDUsuario = new BdUsuariosDataContext();

//Listado Personas
public List<Persona_> ListadoPersonas() {

var qry = from p in BDUsuario.Personas

select new Persona_
{

Id = p.id_Persona,
Nombres = p.Nombre_Persona,
Apellidos = p.Apellido_Persona,

};
return qry.ToList();

}

//Buscar por ID
public List<Persona_> FiltradoPorid(string id)
{
var qryC = from p in BDUsuario.Personas
where p.id_Persona == Convert.ToInt32(id)
select new Persona_
{

Nombres = p.Nombre_Persona,
Apellidos = p.Apellido_Persona,

};

return qryC.ToList();

}
//Guardar un registro

public wsSQLResult CrearUsuario(Stream JSONdataStream)
{
wsSQLResult result = new wsSQLResult();
try
{

StreamReader reader = new StreamReader(JSONdataStream);

string JSONdata = reader.ReadToEnd();
JavaScriptSerializer jss = new JavaScriptSerializer();
Persona_ cust = jss.Deserialize<Persona_>(JSONdata);
if (cust == null)
{
result.WasSuccessful = 0;
result.Exception = “Unable to deserialize the JSON data.”;
return result;
}
Personas newCustomer = new Personas
{

Nombre_Persona = cust.Nombres,
Apellido_Persona = cust.Apellidos,
Login_Persona = cust.Login,
Pass_Persona = cust.Pass
};

BDUsuario.Personas.InsertOnSubmit(newCustomer);
BDUsuario.SubmitChanges();

result.WasSuccessful = 1;
result.Exception = “”;
return result;
}
catch (Exception ex)
{
result.WasSuccessful = 0;
result.Exception = ex.Message;
return result;
}
}

}

8. Crear Clase para POST 

Ahora creamos una clase llamada wsSQLResult donde solo tendrá 2 parámetros. Esto sirve para identificar si guardo los datos o hubo algún problema en guardarlos.

public class wsSQLResult
{
public int WasSuccessful { get; set; }

public string Exception { get; set; }
}

9. Modificando el archivo de configuración

En el Web.config del servicio debe  configurarse de la siguiente manera.

<system.web>
<compilation debug=”true” targetFramework=”4.0″/>
<httpRuntime/>
<pages controlRenderingCompatibilityVersion=”4.0″/>
</system.web>
<system.serviceModel>
<services>
<service name=”DemoJson.Service1″>
<endpoint address=”http://localhost:8965/Service1.svc&#8221; Aca debe ir el link de tu proyecto. 
binding=”webHttpBinding”
contract=”DemoJson.IService1″
behaviorConfiguration=”WebService” />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled=”true” httpsGetEnabled=”true”/>
<serviceDebug includeExceptionDetailInFaults=”false”/>
</behavior>
</serviceBehaviors>

<endpointBehaviors>
<behavior name=”WebService”>
<webHttp/>
</behavior>
</endpointBehaviors>

</behaviors>
<protocolMapping>
<add binding=”basicHttpsBinding” scheme=”https”/>
</protocolMapping>

</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests=”true”/>
<httpProtocol>
<customHeaders>
<add name=”Access-Control-Allow-Origin” value=”*” />
<add name=”Access-Control-Allow-Headers” value=”Content-Type, Accept” />
</customHeaders>
</httpProtocol>
<directoryBrowse enabled=”true”/>
</system.webServer>

 

NOTA : En caso de tener problemas con los atributos WebInvoke y , procede a  importar el assembly System.ServiceModel.Web al proyecto y luego agrega el using a la interface del servicio.

 

10. Invocando los métodos del servicio

Ya teniendo todo implementado es momento de empezar a probar nuestros métodos.

Ejecuta el proyecto. Y dentro del navegador empieza a probar los metodos GET.

Nota : Los resultados estan formato Json

Listado de Personas. 

http://localhost:8965/Service1.svc/ListadoPersonas

 

Captura de pantalla (10)

 

Busqueda de una persona por ID 

http://localhost:8965/Service1.svc/Filtroid/1

Captura de pantalla (11)Metodo POST :

Este método vamos a necesitar el proyecto que mencione en la parte 1 de este proyecto.

1) ejecutamos el proyecto, e ingresamos nuestra URL del metodo post.  y llamamos al metodo POST

Captura de pantalla (13)2) Aca se muestra como recibe los datos para luego guardarlos en nuestra base de datos.

Captura de pantalla (17)

3) Nos devuelve un 1 donde nos indica que ya se encuentra guardado los datos ingresados.

Captura de pantalla (19)

4) Comprobamos con el metodo GET de listado de persona, y ya se encuentra ingresado.

Captura de pantalla (18)

 

Ya tenemos todo funcionando!! Si tienen alguna duda sobre la implementación me encontraran en twitter @carlosariash

En la tercera parte de este tutorial, veremos como ingresar, filtrar, leer y borrar datos desde una aplicacion movil IOS. Android y WP con xamarin y en sus ides nativos ocupando nuestro servicio ya creado.

Saludos nos vemos en la proxima!!🙂

Descargar el Proyecto. 

 

10 comentarios en “WEBSERVICE WCF CON JSON + SQL SERVER EN C# PARTE 2

  1. Muchas gracias por el tutorial! Me fue muy útil! La única consulta que me queda es ¿Cómo haría para agregar uno o más stored porcedures (en lugar de tablas) que retornen datos o inserten datos. Eso sería de mucha ayuda para mi🙂

  2. Muchas gracias por el tutorial! Me fue muy útil! Lo único que me gustaría entender es cómo sería el código cuando trabajamos con stored procedures, ya que en este ejemplo solo se utilizaron tablas para hacer selects, inserts y demás. ¿Serías tan amable de explicarlo?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s