Principales respuestas
Consumo de Web Service VB.net Express 2010

Pregunta
-
Hola a todos, por favor necesito me ayuden.
Tengo éste código:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TasadelDia()
End Sub
Sub TasadelDia()
Dim Cliente = New BancoU.TipoCambioSoapClient()
Console.WriteLine("----Resultados----")
Console.WriteLine(Cliente.TipoCambioDiaString)
Console.WriteLine(" ")
Console.WriteLine("--Fin--")
End Sub
End ClassMe conecto y obtengo el siguiente XML
<?xml version="1.0" encoding="utf-8"?>
<InfoVariable>
<CambioDolar>
<VarDolar>
<fecha>04/01/2018</fecha>
<referencia>1.34148</referencia>
</VarDolar>
</CambioDolar>
<TotalItems>1</TotalItems>
</InfoVariable>Hasta aquí perfecto, ahora lo que quiero es obtener la fecha en una variable y también la referencia en otra variable.
Soy nuevo en ésto de los Web Service y no se como hacerlo.
Gracias por la ayuda.
Saludos.
- Editado NOVO_ jueves, 4 de enero de 2018 19:36
Respuestas
-
"NOVO_" escribió:
> Yo ya tengo un XML de un WebService, el cual trae dos valores, fecha
> y referencia, entonces necesito saber como puedo tomar esos valores
> en una variable independiente, o sea algo así:
>
> Dim xfecha=AlgunaFuncion(cliente,fecha)
>
> o algo como:
>
> Dim xfecha=XML-Algo(cliente.fecha)
>Hola:
La verdad es que el contenido de tu pregunta poco tiene que ver con el asunto de la misma, porque en realidad comentas que deseas recuperar (LEER) los valores de los nodos existentes en el contenido de un documento XML, con independencia que el mismo lo hayas obtenido o no como resultado de consumir un servicio web.
> Me conecto y obtengo el siguiente XML
>
> <?xml version="1.0" encoding="utf-8"?>
> <InfoVariable>
> <CambioDolar>
> <VarDolar>
> <fecha>04/01/2018</fecha>
> <referencia>1.34148</referencia>
> </VarDolar>
> </CambioDolar>
> <TotalItems>1</TotalItems>
> </InfoVariable>Suponiendo que has creado un archivo con el contenido del XML obtenido, en lugar de escribirlo en la consola, te comento que en Internet tienes multitud de ejemplos que enseñan cómo leer un documento XML.
Hay varias maneras de leer un archivo XML, pero para los valores que deseas recuperar de acuerdo al contenido XML que has indicado, mira a ver si te sirve el siguiente código:
Imports System.Xml Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Dim doc As New XmlDocument() ' Cargar el archivo doc.Load("C:\Temporal\Archivo.xml") ' Obtener la lista de los nodos "VarDolar" Dim nodeList As XmlNodeList = doc.SelectNodes("/InfoVariable/CambioDolar/VarDolar") ' Leer el documento For Each node As XmlNode In nodeList ' Obtener el valor de la Fecha Dim fecha As String = node.ChildNodes.Item(0).InnerText ' Obtener el valor de la Referencia Dim referencia As String = node.ChildNodes.Item(1).InnerText Dim msg As String = String.Format("Fecha: {0}{1}Referencia: {2}", fecha, Environment.NewLine, referencia)
MessageBox.Show(msg) Next Catch ex As Exception ' Se ha producido un error MessageBox.Show(ex.Message) End Try End Sub
Y aquí tienes el resultado obtenido:
Recuerda que tienes que crear un archivo con el contenido XML recuperado del servicio web. Para ello, basta con ejecutar lo siguiente:
Imports System.IO Sub TasadelDia() Dim Cliente = New BancoU.TipoCambioSoapClient() ' Console.WriteLine("----Resultados----") ' Console.WriteLine(Cliente.TipoCambioDiaString) ' Console.WriteLine(" ") ' Console.WriteLine("--Fin--") Using sw As New StreamWriter("C:\Temporal\Archivo.xml") sw.Write(Cliente.TipoCambioDiaString) End Using End Sub
Se comprende que el método o propiedad llamado TipoCambioDiaString de la clase referenciada por la variable Cliente devuelve una cadena alfanumérica con el contenido XML, que es la que has utilizado para escribir en la consola.
Modifica el nombre de la carpeta, vaya a ser que en tu unidad C: no exista una carpeta llamada Temporal. ;-)
Un saludo y ¡Feliz Año Nuevo!
Enrique Martínez Montejo
[MS MVP - Visual Studio y Tecnologías de Desarrollo]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.
- Editado Enrique M. MontejoModerator sábado, 6 de enero de 2018 16:40
- Propuesto como respuesta Sergio Parra domingo, 7 de enero de 2018 16:44
- Marcado como respuesta Enrique M. MontejoModerator lunes, 8 de enero de 2018 7:07
-
"NOVO_" escribió:
> Como soy nuevo en éste foro, no se como marcar la respuesta como satisfactoria.
De las distintas acciones que aparecen al final del mensaje, tan solo tienes que hacer clic sobre el enlace Marcar como respuesta:
Enrique Martínez Montejo
[MS MVP - Visual Studio y Tecnologías de Desarrollo]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.- Editado Enrique M. MontejoModerator lunes, 8 de enero de 2018 18:58
- Marcado como respuesta NOVO_ lunes, 8 de enero de 2018 19:10
Todas las respuestas
-
Hola NOVO_
De acuerdo a tu consulta, puedes revisar el siguiente enlace que puede serte útil, es con lo referente a los formatos de fecha.
Quedamos al pendiente de cualquier actualización de tu parte.
Saludos Cordiales
Gracias por usar los foros de MSDN.
Pablo Rubio
_____Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
-
Gracias por tu tiempo Pablo, no es problema de fechas lo que tengo, me explico de nuevo.
Yo ya tengo un XML de un WebService, el cual trae dos valores, fecha y referencia, entonces necesito saber como puedo tomar esos valores en una variable independiente, o sea algo así:
Dim xfecha=AlgunaFuncion(cliente,fecha)
o algo como:
Dim xfecha=XML-Algo(cliente.fecha)
No se si me explico mejor ahora ?
no importando si son String, ya lo hice con el comando Mid(variable, x, y), tratando la respuesta XML como texto, pero quiero tratarlo como archivo XML.
o quizá lo estoy leyendo mal, no importa si leo el webservice como un registro o matriz!!, no tengo ningún problema en darle otra solución!
Saludos!
- Editado NOVO_ jueves, 4 de enero de 2018 22:50
- Propuesto como respuesta Pablo Rubio viernes, 5 de enero de 2018 15:38
- Votado como útil Enrique M. MontejoModerator sábado, 6 de enero de 2018 9:01
-
"NOVO_" escribió:
> Yo ya tengo un XML de un WebService, el cual trae dos valores, fecha
> y referencia, entonces necesito saber como puedo tomar esos valores
> en una variable independiente, o sea algo así:
>
> Dim xfecha=AlgunaFuncion(cliente,fecha)
>
> o algo como:
>
> Dim xfecha=XML-Algo(cliente.fecha)
>Hola:
La verdad es que el contenido de tu pregunta poco tiene que ver con el asunto de la misma, porque en realidad comentas que deseas recuperar (LEER) los valores de los nodos existentes en el contenido de un documento XML, con independencia que el mismo lo hayas obtenido o no como resultado de consumir un servicio web.
> Me conecto y obtengo el siguiente XML
>
> <?xml version="1.0" encoding="utf-8"?>
> <InfoVariable>
> <CambioDolar>
> <VarDolar>
> <fecha>04/01/2018</fecha>
> <referencia>1.34148</referencia>
> </VarDolar>
> </CambioDolar>
> <TotalItems>1</TotalItems>
> </InfoVariable>Suponiendo que has creado un archivo con el contenido del XML obtenido, en lugar de escribirlo en la consola, te comento que en Internet tienes multitud de ejemplos que enseñan cómo leer un documento XML.
Hay varias maneras de leer un archivo XML, pero para los valores que deseas recuperar de acuerdo al contenido XML que has indicado, mira a ver si te sirve el siguiente código:
Imports System.Xml Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Dim doc As New XmlDocument() ' Cargar el archivo doc.Load("C:\Temporal\Archivo.xml") ' Obtener la lista de los nodos "VarDolar" Dim nodeList As XmlNodeList = doc.SelectNodes("/InfoVariable/CambioDolar/VarDolar") ' Leer el documento For Each node As XmlNode In nodeList ' Obtener el valor de la Fecha Dim fecha As String = node.ChildNodes.Item(0).InnerText ' Obtener el valor de la Referencia Dim referencia As String = node.ChildNodes.Item(1).InnerText Dim msg As String = String.Format("Fecha: {0}{1}Referencia: {2}", fecha, Environment.NewLine, referencia)
MessageBox.Show(msg) Next Catch ex As Exception ' Se ha producido un error MessageBox.Show(ex.Message) End Try End Sub
Y aquí tienes el resultado obtenido:
Recuerda que tienes que crear un archivo con el contenido XML recuperado del servicio web. Para ello, basta con ejecutar lo siguiente:
Imports System.IO Sub TasadelDia() Dim Cliente = New BancoU.TipoCambioSoapClient() ' Console.WriteLine("----Resultados----") ' Console.WriteLine(Cliente.TipoCambioDiaString) ' Console.WriteLine(" ") ' Console.WriteLine("--Fin--") Using sw As New StreamWriter("C:\Temporal\Archivo.xml") sw.Write(Cliente.TipoCambioDiaString) End Using End Sub
Se comprende que el método o propiedad llamado TipoCambioDiaString de la clase referenciada por la variable Cliente devuelve una cadena alfanumérica con el contenido XML, que es la que has utilizado para escribir en la consola.
Modifica el nombre de la carpeta, vaya a ser que en tu unidad C: no exista una carpeta llamada Temporal. ;-)
Un saludo y ¡Feliz Año Nuevo!
Enrique Martínez Montejo
[MS MVP - Visual Studio y Tecnologías de Desarrollo]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.
- Editado Enrique M. MontejoModerator sábado, 6 de enero de 2018 16:40
- Propuesto como respuesta Sergio Parra domingo, 7 de enero de 2018 16:44
- Marcado como respuesta Enrique M. MontejoModerator lunes, 8 de enero de 2018 7:07
-
-
"NOVO_" escribió:
> Como soy nuevo en éste foro, no se como marcar la respuesta como satisfactoria.
De las distintas acciones que aparecen al final del mensaje, tan solo tienes que hacer clic sobre el enlace Marcar como respuesta:
Enrique Martínez Montejo
[MS MVP - Visual Studio y Tecnologías de Desarrollo]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.- Editado Enrique M. MontejoModerator lunes, 8 de enero de 2018 18:58
- Marcado como respuesta NOVO_ lunes, 8 de enero de 2018 19:10