none
Consumo de Web Service VB.net Express 2010 RRS feed

  • 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 Class

    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>

    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
    jueves, 4 de enero de 2018 19:17

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.




    sábado, 6 de enero de 2018 16:14
    Moderador
  • "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.


    lunes, 8 de enero de 2018 18:57
    Moderador

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.

    https://support.microsoft.com/es-py/help/811767/how-to-format-datetime-and-date-values-in-the-xml-extracted-from-an-ad

    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.

    jueves, 4 de enero de 2018 22:01
  • 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!

     




    jueves, 4 de enero de 2018 22:29
  • "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.




    sábado, 6 de enero de 2018 16:14
    Moderador
  • Gracias Enrique, así lo haré.

    Como soy nuevo en éste foro, no se como marcar la respuesta como satisfactoria.

    Feliz año.

    Saludos.

    lunes, 8 de enero de 2018 15:16
  • "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.


    lunes, 8 de enero de 2018 18:57
    Moderador