Entrada destacada

Solucion error AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts

Ajax Control Toolkit en ASP.NET Ajax Library Detalles de la Versión :(AspNetAjaxLibraryBeta0911.zip application, 6490K, uploaded Nov 18 ...

Mostrando entradas con la etiqueta Soap. Mostrar todas las entradas
Mostrando entradas con la etiqueta Soap. Mostrar todas las entradas

martes, 7 de abril de 2009

Consumir Web Services desde Office Excel

Continuando con la publicación anterior, hoy quiero mostrarles la forma de conectarnos a un Web Services desde Microsoft Office Excel 2003. Si aún no haz leido la publicación anterior, es bueno que lo hagas ahora en Web Services con Word 2003, ya que hoy saltaré al código inmediatamente, puesto que la forma de utilización es la misma.


Y como ya tenemos instalado el Microsoft Office 2003 Web Services Toolkit 2.01, abre Microsoft Excel y dirígete a “Herramientas/Macro/Macros…” y creas una macro llamada “macroIndicadores”


Una vez abierto el editor de Microsoft Visual Basic, ir al menú “Herramientas/Web Services Referentes…”.


Seleccionar la opción “Dirección URL del servicio Web” e ingresar la URL de Web Services, que en nuestro caso será http://www.desachile.com/webservice.asmx , luego presionar “Buscar” y seleccionar el servicio que se muestra y presionar “Agregar”.




Ahora nos vamos a nuestra macro creada anteriormente (macroIndicadores) y escribimos el siguiente código:


Sub macroIndicadores()
'
' macroIndicadores Macro
' Macro creada el 06/04/2009 por Toby
'
Dim indica As New clsws_Servicios
Dim oFullNodeList As MSXML2.IXMLDOMNodeList
Dim oFilteredNodeList As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode
Dim xdd As MSXML2.DOMDocument30
Dim xdlRows As MSXML2.IXMLDOMNodeList
Dim iRow As Integer
Dim valor As String
Dim lcntRows As Integer
Dim uf As String
Dim usd As String
Dim euro As String
Dim utm As String

Set oFullNodeList = indica.wsm_Indicadores("06", "04", "2009")
Set oFilteredNodeList = oFullNodeList.Item(1).selectNodes("NewDataSet")

Set xdd = New MSXML2.DOMDocument30

With xdd
.async = False
.preserveWhiteSpace = True
.loadXML oFullNodeList.Item(1).XML
Set xdlRows = xdd.selectNodes("//indicadores")
End With

lcntRows = xdlRows.Length - 1

For Each oNode In oFilteredNodeList
For iRow = 0 To lcntRows
uf = oNode.childNodes.Item(iRow).selectSingleNode("UF.valor").Text
usd = oNode.childNodes.Item(iRow).selectSingleNode("USD.valor").Text
euro = oNode.childNodes.Item(iRow).selectSingleNode("EURO.valor").Text
utm = oNode.childNodes.Item(iRow).selectSingleNode("UTM.valor").Text
Next
Next
Hoja1.Cells(2, 2) = "Indicadores Económicos del Día"
Hoja1.Cells(4, 2) = "uf"
Hoja1.Cells(5, 2) = "usd"
Hoja1.Cells(6, 2) = "euro"
Hoja1.Cells(7, 2) = "utm"

Hoja1.Cells(4, 3) = uf
Hoja1.Cells(5, 3) = usd
Hoja1.Cells(6, 3) = euro
Hoja1.Cells(7, 3) = utm

End Sub

Luego de ejecutar la macro, el resultado será:



Si te has fijado bien, el código es exactamente el mismo a la publicación anterior Web Services con Word 2003 exepto por la forma de como mostrarás los valores. Más sencillo no puede ser.


Es todo por hoy y hasta la próxima publicación.


Saludos, Toby

miércoles, 21 de enero de 2009

Consumir Web Services desde Office Word

Muchas veces nos resultará más fácil y práctico extender la funcionalidad de las aplicaciones Office a través de la utilización de Web Services, en lugar de crear una aplicación Windows desde cero, por lo tanto lo que hoy les enseñaré será la forma de cómo podemos conectarnos al Web Services mediante Visual Basic para Aplicaciones (VBA) desde las aplicaciones de Microsoft Office 2003. Hoy será utilizando Microsoft Office Word 2003 y en la siguiente publicación lo haremos con Microsoft Office Excel 2003.


Vamos a conectarnos nuevamente al Web Services de Indicadores Financieros de DesaChile.com.


Lo primero que necesitaremos será descargar el Microsoft Office 2003 Web Services Toolkit 2.01 desde el sitio de Microsoft en esta dirección (yo descargue la versión en español) http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=fa36018a-e1cf-48a3-9b35-169d819ecf18


Luego de instalar el Toolkit, abre Microsoft Word y dirígete a “Herramientas/Macro/Macros…”



Ingresa un nombre para la macro. En mi caso he colocado “macroIndicadores”. Hacer clic en “Crear”.



Una vez abierto el edito de Microsoft Visual Basic, ir al menú “Herramientas/Web Services Referentes…”.



Seleccionar la opción “Dirección URL del servicio Web” e ingresar la URL de Web Services, que en nuestro caso será http://www.desachile.com/webservice.asmx , luego presionar “Buscar” y seleccionar el servicio que se muestra y presionar “Agregar”.



“Microsoft Office 2003 Web Services Toolkit” nos ha creado una clase Proxy llamada “clsws_Servicios” para el Web Services y además nos agrego un código de ejemplo que se encuentra comentariado al inicio de la clase.



Este es el código que nos agrego en un módulo de clase llamado “clsws_Servicios”


Private sc_Servicios As SoapClient30
Private Const c_WSDL_URL As String = "http://www.desachile.com/webservice.asmx?wsdl"
Private Const c_SERVICE As String = "Servicios"
Private Const c_PORT As String = "ServiciosSoap"
Private Const c_SERVICE_NAMESPACE As String = "DESACHILE"

Private Sub Class_Initialize()
'*****************************************************************
'Se llamará a esta subrutina cada vez que se creen instancias de la clase.
'Crea sc_ComplexTypes como SoapClient30 nuevo y, a continuación,
'inicializa sc_ComplexTypes.mssoapinit2 con el archivo WSDL encontrado en
'http://www.desachile.com/webservice.asmx?wsdl.
'*****************************************************************

Dim str_WSML As String
str_WSML = ""

Set sc_Servicios = New SoapClient30

sc_Servicios.MSSoapInit2 c_WSDL_URL, str_WSML, c_SERVICE, c_PORT, c_SERVICE_NAMESPACE
'Utilice el servidor proxy definido en la configuración LAN de Internet Explorer
'estableciendo ProxyServer en <CURRENT_USER>
sc_Servicios.ConnectorProperty("ProxyServer") = "<CURRENT_USER>"
'Detectar automáticamente la configuración proxy si la aplicación Internet Explorer está definida para realizar esta función
'estableciendo EnableAutoProxy en True
sc_Servicios.ConnectorProperty("EnableAutoProxy") = True


End Sub

Private Sub Class_Terminate()
'*****************************************************************
'Se llamará a esta subrutina cada vez que se destruya la clase.
'Establece sc_ComplexTypes a Nothing.
'*****************************************************************

'Intercepción de errores
On Error GoTo Class_TerminateTrap

Set sc_Servicios = Nothing

Exit Sub

Class_TerminateTrap:
ServiciosErrorHandler ("Class_Terminate")
End Sub

Private Sub ServiciosErrorHandler(str_Function As String)
'*****************************************************************
'Esta subrutina es el controlador de errores de clase. Se puede llamar desde cualquier subrutina o función de clases
'cuando dicha subrutina o función encuentra un error. A continuación, generará el error junto con el
'nombre de la subrutina o función que realiza la llamada.
'*****************************************************************

'Error SOAP
If sc_Servicios.FaultCode <> "" Then
Err.Raise vbObjectError, str_Function, sc_Servicios.FaultString
'Error no SOAP
Else
Err.Raise Err.Number, str_Function, Err.Description
End If

End Sub

Public Function wsm_Indicadores(ByVal str_day As String, ByVal str_month As String, ByVal str_year As String) As MSXML2.IXMLDOMNodeList
'*****************************************************************
'Se creó la función proxy desde http://www.desachile.com/webservice.asmx?wsdl.
'
'"wsm_Indicadores" está definido como XML. Consulte el tema Tipos complejos: Variables XML en
'la Ayuda de Web Services Toolkit de Microsoft Office 2003 para obtener detalles acerca de la implementación de variables XML.
'*****************************************************************

'Intercepción de errores
On Error GoTo wsm_IndicadoresTrap

Set wsm_Indicadores = sc_Servicios.indicadores(str_day, str_month, str_year)

Exit Function
wsm_IndicadoresTrap:
ServiciosErrorHandler "wsm_Indicadores"
End Function

Ahora nos vamos a nuestra macro creada anteriormente (macroIndicadores) y escribimos el siguiente código:


Option Explicit

Sub macroIndicadores()
'
' macroIndicadores Macro
' Macro creada el 21/01/2009 por Toby
'
Dim indica As New clsws_Servicios
Dim oFullNodeList As MSXML2.IXMLDOMNodeList
Dim oFilteredNodeList As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode
Dim xdd As MSXML2.DOMDocument30
Dim xdlRows As MSXML2.IXMLDOMNodeList
Dim iRow As Integer
Dim valor As String
Dim lcntRows As Integer
Dim uf As String
Dim usd As String
Dim euro As String
Dim utm As String

Set oFullNodeList = indica.wsm_Indicadores("21", "01", "2009")
Set oFilteredNodeList = oFullNodeList.Item(1).SelectNodes("NewDataSet")

Set xdd = New MSXML2.DOMDocument30

With xdd
.async = False
.preserveWhiteSpace = True
.LoadXml oFullNodeList.Item(1).XML
Set xdlRows = xdd.SelectNodes("//indicadores")
End With

lcntRows = xdlRows.Length - 1

For Each oNode In oFilteredNodeList
For iRow = 0 To lcntRows
uf = oNode.ChildNodes.Item(iRow).SelectSingleNode("UF.valor").Text
usd = oNode.ChildNodes.Item(iRow).SelectSingleNode("USD.valor").Text
euro = oNode.ChildNodes.Item(iRow).SelectSingleNode("EURO.valor").Text
utm = oNode.ChildNodes.Item(iRow).SelectSingleNode("UTM.valor").Text
Next
Next

Selection.TypeText Text:="Indicadores Económicos del Día"
Selection.TypeParagraph
Selection.TypeText Text:="Euro = " & euro
Selection.TypeParagraph
Selection.TypeText Text:="Dólar = " & usd
Selection.TypeParagraph
Selection.TypeText Text:="UTM = " & utm
Selection.TypeParagraph
Selection.TypeText Text:="UF = " & uf
End Sub

Luego de ejecutar la macro, el resultado será:



Desde aquí en adelante ustedes pueden hacer lo que quieran con estos valores. Yo me despido hasta la próxima publicación.


Saludos, Toby

jueves, 25 de diciembre de 2008

Consumir Web Services de Indicadores con PHP

En publicaciones anteriores, hemos visto diversas formas de conectarnos a un Web Services que nos entregaba los indicadores económicos de Chile. Hoy realizaremos la conexión al mismo servicio, pero desde PHP con la ayuda de NuSOAP que es un kit de herramientas (ToolKit) para desarrollar Web Services. NuSOAP esta compuesto por una serie de clases que nos harán mucho más fácil el desarrollo de clientes, es decir, aquellas aplicaciones que consumen los Web Services. También podemos crear servidores, ósea, aquellos que los proveen, pero eso no lo veremos hoy.


El código para consultar los indicadores financieros es bastante simple y no necesitará mayores comentarios:


<?php
require_once('lib/nusoap.php');
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
$proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
$proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';

$client = new nusoap_client('http://www.desachile.com/webservice.asmx?WSDL', 'wsdl',
                        $proxyhost, $proxyport, $proxyusername, $proxypassword);
$err = $client->getError();
if ($err) {
    echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}

$param = array('Fecha' => '20081010');
$result = $client->call('Indicadores', $param, '', '', false, true);

if ($client->fault) {
    echo '<h2>Fault</h2><pre>';
    print_r($result);
    echo '</pre>';
} else {
    $err = $client->getError();
    if ($err) {
        echo '<h2>Error</h2><pre>' . $err . '</pre>';
    } else {
        echo '<h2>Result</h2><pre>';
        print_r($result);
        echo '</pre>';
    }
}

$indicadores = $result['IndicadoresResult']['diffgram']['NewDataSet']['indicadores'];

echo 'UTM = '.$indicadores['utm'].'<br>';
echo 'UF = '.$indicadores['uf'].'<br>';
echo 'USD = '.$indicadores['usd'].'<br>';
echo 'EURO = '.$indicadores['euro'].'<br>';
?>

Espero les sea de utilidad.

Toby

jueves, 18 de diciembre de 2008

Consumir Web Services de Indicadores con ASP

En una publicación anterior, vimos como podíamos conectarnos a un Web Services utilizando el lenguaje de programación Visual Basic 6. Hoy veremos como conectarnos al mismo Web Services que nos entregaba los indicadores económicos de Chile. Empecemos.

Comencemos por crear el formulario que recibirá la fecha de consulta e invocará al Web Services que se llamará “RescateWS.asp”. El código es el siguiente:




<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>http://turboprogramacion.blogspot.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Estilo1 {
color: #FFFFFF;
font-weight: bold;
font-size: 18px
}
-->
</style>
</head>
<body>
<form action="Invocar.asp" method="post" name="form1">
<table width="300" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor="#004080">
<td colspan="3"><div align="center" class="Estilo1">Consutar Indicadores Econ&oacute;micos</div></td>
</tr>
<tr bgcolor="#CCCCCC">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="#CCCCCC">
<td width="61%" align="right">Ingrese Fecha (yyyymmdd)</td>
<td width="4%">:</td>
<td width="35%"><input name="fecha" type="text" id="fecha" size="10" maxlength="10"></td>
</tr>
<tr bgcolor="#CCCCCC">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="#808080">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input name="Consultar" type="submit" value="Consultar"></td>
</tr>
</table>
</form>
</body>
</html>



Ahora el archivo “Funcion.asp”, en donde vamos a crear la función “LeeXml()” que se encargará de leer el XML de respuesta con los indicadores que nos enviará el Web Services y la función “InvocarWebService()” que enviará el XML de consulta con el parámetro fecha. Nuestras funciones quedarán así:




<%
Function LeeXml(responseText)
Dim xmlResponse
Dim xnodelist
Dim indicadores
Dim id, uf, usd, euro, utm, tcm, fecha

indicadores = ""
If Len(responseText) <> 0 Then
Set xmlResponse = CreateObject("MSXML2.DOMDocument")
xmlResponse.async = false
xmlResponse.loadXml responseText
Set xnodelist = xmlResponse.documentElement.selectNodes("/soap:Envelope/soap:Body/IndicadoresResponse/IndicadoresResult/diffgr:diffgram/NewDataSet/indicadores")
Dim objItem

For Each objItem In xnodelist
id = objItem.selectSingleNode("id").Text
uf = objItem.selectSingleNode("uf").Text
usd = objItem.selectSingleNode("usd").Text
euro = objItem.selectSingleNode("euro").Text
utm = objItem.selectSingleNode("utm").Text
tcm = objItem.selectSingleNode("tcm").Text
fecha = objItem.selectSingleNode("fecha").Text
Next

indicadores = "<TABLE CELLSPACING='1' bgcolor='#dedede' ALIGN=CENTER WIDTH='250'>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>UF</TD>" & _
"<TD align='right'>"&uf&"</TD>" & _
"</TR>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>UTM</TD>" & _
"<TD align='right'>"&utm&"</TD>" & _
"</TR>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>D&oacute;lar Observado</TD>" & _
"<TD align='right'>"&usd&"</TD>" & _
"</TR>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>Euro</a></TD>" & _
"<TD align='right'>"&euro&"</TD>" & _
"</TR>" & _
"</TABLE>"
End If

LeeXml = indicadores
End Function

Function InvocarWebService (strSoap, strSOAPAction, strURL, ByRef xmlResponse)
Dim xmlhttp
Dim blnSuccess

Set xmlhttp = server.CreateObject("WinHttp.WinHttpRequest.5.1")
xmlhttp.Open "POST", strURL
xmlhttp.setRequestHeader "Man", "POST " & strURL & " HTTP/1.1"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction
call xmlhttp.send(strSoap)

If xmlhttp.Status = 200 Then
blnSuccess = True
Else
blnSuccess = False
End If

xmlResponse = xmlhttp.ResponseText
InvocarWebService = blnSuccess
Set xmlhttp = Nothing
End Function
%>



Ya solo nos queda crear la página “Invocar.asp” que contiene el XML de consulta y llama a las funciones “InvocarWebService()” y “LeeXml()” para posteriormente presentarnos los indicadores resultantes por pantalla. Entonces el código es:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "funcion.asp" -->
<%
strFecha = Request.Form("fecha")
strSoap = "<?xml version='1.0' encoding='utf-8'?>"& _
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"& _
"<soap:Body>"& _
"<Indicadores xmlns='Indicadores'>"& _
"<Fecha>"&strFecha&"</Fecha>"& _
"</Indicadores>"& _
"</soap:Body>"& _
"</soap:Envelope>"
strSOAPAction = "Indicadores/Indicadores"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>http://turboprogramacion.blogspot.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
Dim xmlResponse
If InvocarWebService (strSoap, strSOAPAction, "http://www.desachile.com/webservice.asmx?WSDL", xmlResponse) Then
Response.Write(LeeXml(xmlResponse))
Else
Response.Write "*** Ha ocurrido un Error ***"
End If
Set xmlResponse = Nothing
%>
</body>
</html>



Listo, ya solo nos queda probar. Si estás detrás de un Proxy, puede que tengas que hacer una pequeña variación en el código. Eso se los dejo como tarea.


Saludos y espero les ayude a quienes están comenzando con este tema.


Toby


Los archivos del ejemplo, los puedes descargar en DesaChile.com

lunes, 8 de diciembre de 2008

Consumir Web Services con Visual Basic

Vamos a crear una aplicación en Visual Basic para conectarnos a un Web Services que nos entregará los indicadores económicos de Chile, los cuales podemos usar en cualquier aplicación si la necesidad de tener que ingresar nosotros mismos estos valores a una base de datos. Empecemos.


Comencemos por crear un nuevo proyecto




Los controles que agregaremos son los siguientes:




Luego guardamos el proyecto como “Consulta_WS.vbp” y el formulario como “Form_WS.frm”.


Ahora que ya tenemos todo listo, nuestro formulario debería quedar así:




Antes de comenzar a escribir código en nuestro proyecto, necesitamos agregar una referencia a “Microsoft XML, V3.0” y eso lo hacemos de:




Luego buscamos “Microsoft XML, V3.0” y la seleccionamos.




Hacemos clic en Aceptar y ya estamos listos.


Nuestro siguiente paso será agregar un Módulo a nuestro proyecto.





Le dejamos el nombre que nos da por defecto (Module1) y escribimos la siguiente función:

Function InvokeWebService(strSoap, strSOAPAction, strURL, ByRef xmlResponse) As Boolean
Dim xmlhttp As MSXML2.XMLHTTP30
Dim blnSuccess As Boolean

Set xmlhttp = New MSXML2.XMLHTTP30
xmlhttp.open "POST", strURL, False
xmlhttp.setRequestHeader "Man", "POST " & strURL & " HTTP/1.1"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction
Call xmlhttp.send(strSoap)

If xmlhttp.Status = 200 Then
blnSuccess = True
Else
blnSuccess = False
End If

Set xmlResponse = xmlhttp.responseXML
InvokeWebService = blnSuccess
Set xmlhttp = Nothing
End Function



Ahora que ya tenemos lista la función que se encargará de conectarse al Web Services, nos queda poder llamarla desde nuestro botón “Consultar”. Damos doble clic sobre el botón y escribimos:


Private Sub Consultar_Click()
Dim xmlResponse As MSXML2.DOMDocument30
Dim strSoap As String
Dim strSOAPAction As String
Dim strWsdl As String

strSoap = Soap.Text
strSOAPAction = Action.Text
strWsdl = Wsdl.Text
If InvokeWebService(strSoap, strSOAPAction, strWsdl, xmlResponse) Then
Resultado.Text = xmlResponse.xml
Else
Resultado.Text = "Error"
End If

Set xmlResponse = Nothing
End Sub



Bueno, ya tenemos lista nuestra aplicación que se encargará de consultar un Web Services, pero ahora debemos aprender como usarla.

Para nuestro ejemplo, vamos a consultar la página de Indicadores Financieros de Chile desde la siguiente dirección (siempre que el servicio se encuentre disponible, o sino, pueden usar otro web services): http://www.desachile.com. Una vez aquí buscamos la dirección que nos llevará a la página del Web Services http://www.desachile.com/webservice.asmx


Analicemos un poco esta página. En el link “Service Description”, si haces clic sobre el, veremos que nos lleva a la página http://www.desachile.com/webservice.asmx?WSDL en donde WSDL son las siglas de Web Services Description Language, un formato XML que se utiliza para describir los Servicios Web. Volvamos atrás.


Si hacemos clic en el Link “Indicadores”, nos llevará a http://www.desachile.com/webservice.asmx?op=Indicadores que es la página que nos interesa, por que nos dirá que información debemos enviar para consultar el Web Services de Indicadores Financieros.


Fijémonos en SOAP 1.1


La primera sección nos indica que es lo que debemos enviar y la segunda sección nos indica que es lo que recibiremos. Como vemos, debemos enviar un XML con una fecha de consulta y nos retornará un XML con los resultados.


Vamos a copiar la primera sección y pegarla en nuestra aplicación en el cuadro que tenemos para el Soap. No olviden colocar la fecha de consulta con el formato año mes día (ej: 20081203):


<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Indicadores xmlns="Indicadores">
<Fecha>20081203</Fecha>
</Indicadores>
</soap:Body>
</soap:Envelope>


Ahora copiamos el SOAPAction ("Indicadores/Indicadores") y lo pegamos en Action de nuestra aplicación sin las comillas.


Ya solo nos queda la dirección Wsdl que como ya vimos antes es: http://www.desachile.com/webservice.asmx?WSDL la copiamos y la pegamos en nuestra aplicación.


Ya podemos hacer clic en consultar y obtendremos el XML con los indicadores.




Si ordenamos el resultado tendremos:


<?xml version="1.0" ?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<IndicadoresResponse xmlns="Indicadores">
<IndicadoresResult>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="indicadores">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:int" minOccurs="0" />
<xs:element name="uf" type="xs:double" minOccurs="0" />
<xs:element name="usd" type="xs:double" minOccurs="0" />
<xs:element name="euro" type="xs:double" minOccurs="0" />
<xs:element name="utm" type="xs:double" minOccurs="0" />
<xs:element name="tcm" type="xs:double" minOccurs="0" />
<xs:element name="fecha" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<indicadores diffgr:id="indicadores1" msdata:rowOrder="0">
<id>432</id>
<uf>21429.37</uf>
<usd>666.84</usd>
<euro>847.53</euro>
<utm>37652</utm>
<tcm>127.49</tcm>
<fecha>20081203</fecha>
</indicadores>
</NewDataSet>
</diffgr:diffgram>
</IndicadoresResult>
</IndicadoresResponse>
</soap:Body>
</soap:Envelope>


Ahora ya solo queda recorrer el XML para obtener los valores, pero eso se los dejo a ustedes.

Saludos y espero les sirva.


Entradas populares