Introducción
Esta puede ser de utilidad para todo aquel que puede tener
la necesidad de consumir un servicio web y su sitio web este utilizando esta tecnología de Microsoft que aunque antigua se sigue utilizando en muchos sitios web de hoy en
día y no cuenta con todas las ayudas de nuevas tecnologías o entornos que hacen
que esta acción se mucho más cómoda y sencilla.
Antes de comenzar los que necesitaremos.
Requisitos:
SO: Windows
Servidor
web: IIS 6.0
Visual
Studio 2003 .NET framework 1.1
1º) Crear servicio web.
Lo primero de todo vamos comenzar creado nuestro servicio
web de prueba, que simplemente tendrá como funcionalidad que le pasamos una
cadena y esta sea devuelta por nuestro webServices en mayúsculas. Para ello
alimentaremos a nuestro servicio web con los siguientes parámetros:
Parámetro 1: Cadena (Cadena con el texto que vamos a
convertir en mayúscula)
Definimos nuestro método que lo llamaremos “getUpper”.
Código del método de nuestro servicio web.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace PruebaWS
{
///
/// Summary description for Service1.
///
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web Services Designer
InitializeComponent();
}
#region Component Designer generated code
//Required by the Web Services Designer
private IContainer components = null;
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
[WebMethod]
public string getUpper(string cadena)
{
return cadena.ToUpper();
}
}
}
Archivo: "Includes\clsWsServices.asp"
<%
Class clsWsServices
Function InvokeWebService (strSoap, strSOAPAction, strURL, ByRef xmlResponse)
'************************************************************************
' Descripción: Invoca un WebService y obtiene su resultado.
'
' Inputs:
' strSoap: Petición HTTP a enviar, en formato SOAP. Contiene la
' llamada al WebMethod y sus parámetros
' correspondientes.
' strSOAPAction: Namespace y nombre del WebMethod a utilizar.
' strURL: URL del WebService.
'
' Returns:
' La función retornará False si ha fallado la ejecución del WebService o si
' ha habido error en la comunicación con el servidor remoto. De lo contrario
' retornará True.
'
' xmlResponse: Respuesta obtenida desde el WebService, parseada
' por el MSXML.
'************************************************************************
Dim xmlhttp
Dim blnSuccess
'Creamos el objeto ServerXMLHTTP
Set xmlhttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
'Abrimos la conexión con el método POST, ya que estamos enviando una
'petición.
xmlhttp.Open "POST", strURL
'Agregamos encabezados HTTP requeridos por el WebService
xmlhttp.setRequestHeader "Man", "POST " & strURL & " HTTP/1.1"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction
'El SOAPAction es importante ya que el WebService lo utilizará para
'verificar qué WebMethod estamos usando en la operación.
'Enviamos la petición
xmlhttp.send(strSoap)
'Verificamos el estado de la comunicación
If xmlhttp.Status = 200 Then
'El código 200 implica que la comunicación se puedo establecer y que
'el WebService se ejecutó con éxito.
blnSuccess = True
Else
'Si el código es distinto de 200, la comunicación falló o el
'WebService provocó un Error.
blnSuccess = False
End If
'Obtenemos la respuesta del servidor remoto, parseada por el MSXML.
'Set xmlResponse = xmlhttp.responseXML
Set xmlResponse = xmlhttp
InvokeWebService = blnSuccess
'Destruimos el objeto, acá no hay GarbageCollector ;)
Set xmlhttp = Nothing
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''' METODOS DEL WEBSERVICES ''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''
Public Function getUpper(cadena)
strSoap = "" & _
"" & _
"" & _
" " & _
"" & _
"" & _
""& cadena & " " & _
" " & _
" " & _
" "
'Una vez que tenemos el mensaje SOAP armado, procedemos
'a invocar al Web Service. Para hacerlo, necesitamos el
'SOAPAction, el cual se forma con el namespace del Web Service / el nombre del WebMethod:
strSOAPAction = "http://tempuri.org/getUpper"
'Ahora sí estamos listos para llamar a la función InvokeWebService().
'Conociendo la estructura del XML de respuesta (SOAP Response),
'obtenemos el resultado de la ejecución:
'Dimensionamos la variable donde obtendremos la respuesta del WebService
Dim xmlResponse
Dim rs
'Realizamos la llamada a la función InvokeWebService(), brindándole los parámetros correspondientes
If InvokeWebService (strSoap, strSOAPAction, RUTA_WS, xmlResponse) Then
getUpper = xmlResponse.responseXML.documentElement.selectSingleNode("soap:Body/getUpperResponse").text
Else
'Pero si hubo algún problema, le informamos al usuario
getUpper = "Error: No se ha podido conectar con el servicio web."
End If
'Liberamos la memoria del objeto xmlResponse
Set xmlResponse = Nothing
End Function
End Class
%>
Archivo: "Includes\constantes.asp"
<% Const RUTA_WS = "http://localhost/PruebaWS/Service1.asmx" %>
Archivo: "Includes\callWs.asp"
<%
'Objeto WebServices
Dim PruebaWs
Set PruebaWs = New clsWsServices
Dim cadena
Dim resultado
'Obtenemos el parametro
cadena = Request.QueryString("pCadena")
'LLamada Servicio WebServices
resultado = PruebaWs.getUpper(cadena)
'Volvemos a la pagina principal
Response.redirect "../Prueba.asp?pResult=" & resultado & "&pCadena=" &cadena
%>
Archivo: "Prueba.asp"
PRUEBA - WS



No hay comentarios:
Publicar un comentario