Consumir servicio web con Microsoft ASP.NET C# desde un WSDL
5.1.09. Por ooscarr (ooscarr)
Me pidieron que consumiera el servicio web que creé anteriormente en java pero con ASP.NET. Así que en este post mostraré cómo consumí el servicio web a partir del WSDL utilizando las herramientas oficiales de Microsoft® para Windows®.
Preparativos
Primero, obtenemos la ruta web al WSDL (en este caso, http://localhost:8080/Holaste/HolasteService?WSDL) y nos aseguramos que esté funcionando.
Nuevo sitio web
Después, abrir el Visual (en este caso, Microsoft® Visual Web Developer 2008 Express Edition, es gratis) y crear un Nuevo sitio web ASP.NET
en Visual C#
.

Se creará un archivo Default.aspx.
Ahora vamos al menú Sitio web
> Agregar referencia web...
, y pegamos la dirección del WSDL.

Cuando aparezca el servicio, le ponemos un Nombre de referencia web
, por ejemplo, localhost.

De modo que quede en el Explorador de soluciones
, más o menos así:

Código
El código, que pone un simple formulario y consume el servicio quedaría como sigue:
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<script runat="Server">
void Page_Load (object sender, EventArgs e) {
// Crea el servicio
localhost.HolasteService Servicio1 = new localhost.HolasteService();
//Obtiene el nombre del formulario
String nombre = Servicio1.diHola(CampoNombre.Text);
// Muestra el nombre, si obtiene alguno
if (nombre == null || nombre == "Hola, ")
Label1.Text = "[No se ingresó nombre]";
else
Label1.Text = nombre;
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-cl" lang="es-cl" dir="ltr">
<head>
<title>Holaste</title>
<meta http-equiv="content-type" content="application/xhtml+xml;charset=UTF-8" />
</head>
<body>
<h1>Holaste</h1>
<p>Este programa consume el servicio <a href="http://www.ooscarr.com/nerd/elblog/2008/12/crear-un-simple-servicio-web-en.php">Holaste</a>.</p>
<h2>HolasteService</h2>
<form id="form1" runat="server" method="post">
<p><label for="CampoNombre">Nombre:</label>
<asp:TextBox id="CampoNombre" runat="server"/></p>
<p><button id="Submit" type="submit" runat="server">Enviar</button></p>
<h3>Respuesta</h3>
<p><strong style="text-decoration:blink;"><asp:Label id="Label1" runat="server"></asp:Label></strong></p>
</form>
</body>
</html>
Resultado
Finalmente lo ejecutamos, y debería aparecer algo parecido a esto:
* La página es sólo de referencia. No sirve.


2 comentarios (RSS
) :
A las 16/2/09 20:04
Hola, de pura casualidad, se podrías saber como es tu XML de entrada a tu WS?
A las 16/2/09 23:01
Sí, cómo no. Aquí está la petición y la respuesta del servicio web.
Referencias a este artículo:
Página principal