Beruflich Dokumente
Kultur Dokumente
MarckUp Pagina 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebPage.aspx.cs" Inherits="WebServicesApp.WebPage" %> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Mi primer Web Service</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></scrip <script src="NewWebService.js" type="text/javascript"></script> </head> <body> <form id="form1" runat="server"> <div> <input type="button" id="LlamadaServicio" value="Llamar al servicio" /> <input type="button" id="ServicioHora" value="Hora por favor" /> <input type="button" id="ServicioEnviarDatos" value="Enviar Objecto" /> </div> </form> </body> </html>
type: /ipo de llamada "ue se e,ecutara por defecto es 2-/. url: 4uta a la cual se le e,ecutara la llamada. data: Datos "ue se enviaran al servidor' se env&a un string con formato de JS3N. contentType: /ipo de datos "ue van a ser enviara al servidor.
dataType: /ipo de dato "ue se espera recibir desde el servidor . J"uery lo interpreta con los +5+- types "ue el soporta. !os valores vlidos para esta propiedad son los siguientes6 7*ml'#tml'script',son',sop'te*t8 success: 9uncin e,ecutada cuando la llamada (,a* fue satisfactoria. error: 9uncin a ser e,ecutada si la llamada (,a* no fue satisfactoria. async: $ropiedad "ue define si la llamada (,a* es as&ncrona o no' por defecto esta propiedad es verdadera. -stas definiciones sern utili0adas posteriormente y es importante conocer su significado.
2. Crear el WebService.
$ara crear el WebService lo #acemos mediante :isual Studio como se muestra en la siguiente imagen.
!a solucin con el nuevo &tem de tipo WebService ser ver&a como se puede apreciar en la siguiente imagen.
$osteriormente modificando el cdigo generado por el :isual Studio debemos #abilitar la propiedad de ScriptService permiti1ndome recibir llamadas desde el lado del cliente. Cada Web+et#od "ue creemos en nuestra clase WebService debe tener el siguiente atributo en la declaracin del ;Web+et#od< y deber de ser p=blica para ser accesible.
Si se re"uiere mantener datos de Sesin en nuestra funcin del WebService el atributo "ue se debe especificar es ;Web+et#od7-nableSession>true8< de lo contrario no se podr acceder ning=n propiedad u ob,eto en la Sesin. (dicionalmente es necesario agregar el siguiente atributo a la declaracin del ebmet#od ;System.Web.Script.Services.ScriptService< ya "ue si no lo #acemos el m1todo nunca estar disponible desde el lado del cliente. -l resultado debe observarse como el siguiente listado.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
namespace WebServicesApp { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] public class MyWebService : System.Web.Services.WebService { [WebMethod(EnableSession=true)] public string HolaServicio(string Usuario) { return "Hola Servicio, como estas: "+ Usuario+"?"; } }
3. Llamado va Ajax.
:amos a #acer una llamada desde el botn !lamadaServicio y le enviaremos a nuestro Web+et#od el nombre del usuario. ) este posteriormente lo desplegara con un alert. -n la propiedad url enviamos la ruta de nuestro WebService y posteriormente le ponemos un ?@A y le agregamos el nombre de nuestro Web+et#od. $ara enviar parmetros al servidor se #ace por medio de la argumento BdataB ' cada propiedad data es un parmetro del Web+et#od' como podemos ver Csuario es el nombre del parmetro "ue recibe nuestro Web+et#od.
?
5 6 7 8 9 10 11 12 13 14 15 16 17 18
data: "{'Usuario':'" + "Roy Cruz" + "'}", contentType: 'application/json; utf-8', dataType: 'json', success: function (data) { if (data.d != null) { alert(data.d); } }, error: function (jqXHR, textStatus, errorThrown) { } }); });
Si en data #acen falta parmetros o no se enca,aran con la definicin' entonces el WebService no va a ser recibido por el servidor y nos devolver un error DEE.
Enviar '&$( 1 2 3 4 5 6 7 8
[WebMethod] public WebServicesApp.MyClasses.SendTime EnviarHora() { MyClasses.SendTime sendTime = new MyClasses.SendTime(); sendTime.Date = DateTime.Now.ToString(); sendTime.UserName = "Roy Cruz"; return sendTime; }
-l ob,eto es recibido por el la llamada (,a* en data. /odos los ob,etos "ue son recibidos en los WebSevices se encuentran en data.d.
?
$%j!"o A )!ci%ir 1 2 3 4 5 6 7 8
namespace WebServicesApp.MyClasses { public class RecibeElement { private string _browserName; private string _browserVersion; private string _UserAgent; public string BrowserName {
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
get { return _browserName; } set { _browserName = value; } } public string BrowserVersion { get { return _browserVersion; } set { _browserVersion = value; } } public string UserAgent { get { return _UserAgent; } set { _UserAgent = value; } } public RecibeElement() { } } }
$or el lado de JS todas las propiedades del JS3N deben de llamarse igual "ue las de la Clase en C% y todos sus valores deben de ser los mismos si por casualidad un JS3N "ue enviemos posee una propiedad string donde deber&a de ser integer entonces el WebService no va a coincidir con las propiedades.
?
*!%&!rvic! 1 2 3 4 5
[WebMethod] public string HolaObjeto(MyClasses.RecibeElement newClass) { return "Tipo Clase: "+ newClass.GetType().Name + "\nBrowser: "+newClass.BrowserName; }
$ara convertir el JS3N a string lo #acemos con esta funcin de ,avascript. JS3N.stringify73b,eto8F
?
15 16 17 18 19 20 21 22 23 24
(d,unto a esta entrada se encuentra la solucin completa para "ue la pueda probar' espero les #aya sido de utilidad.