none
Enviar un xml a un webservice desde VB 6.0 RRS feed

  • Pregunta

  • Estoy usando el formato SOAP que me da el webservice:

    Private Const xml = _
    "<?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>" & _
        "<GeneraResol xmlns=""http://localhost/wbsResoluciones"">" & _
         "<documento>DCTO</documento>" & _
        "</GeneraResol>" & _
      "</soap:Body>" & _
    "</soap:Envelope>"

    Y lo que quiero hacer es enviar en la variable <documento> un string de xml, al reemplazar la variable por el string xml como este posee los tags "<" ">" el XML se envia vacio al webservice el cual ademas no llega al webservice, en cambio si escribo cualquier palabra en la variable documento, esa variable llega sin problemas.

    Que puedo hacer para enviar un XML como string en VB6.0.

    Saludos y Gracias

    miércoles, 21 de noviembre de 2012 15:12

Todas las respuestas

  • Hola,

    A mi no me queda claro si tu problema es armar el xml o enviarlo al ws, el titulo dice que necesitas enviar un xml a un ws pero tu mensaje dice otra cosa.

    Voy por la respuesta al mensaje, en ves de definir el xml como constante arma el xml al momento de enviarlo, ejemplo:

    La variable DCTO debe contener el dato que queres enviar al ws 

    Dim xml as string

    xml = "<?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>" & _
        "<GeneraResol xmlns=""http://localhost/wbsResoluciones"">" & _
         "<documento>" & DCTO & </documento>" & _
        "</GeneraResol>" & _
      "</soap:Body>" & _
    "</soap:Envelope>"

    miércoles, 21 de noviembre de 2012 15:27
  • ese es el formato del soap del webservice

    xml = "<?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>" & _
        "<GeneraResol xmlns=""http://localhost/wbsResoluciones"">" & _
         "<documento>" & DCTO & </documento>" & _
        "</GeneraResol>" & _
      "</soap:Body>" & _
    "</soap:Envelope>"

    La variable DCTO seria otro XML guardado como string

    por ejemplo DCTO= <tag>hola mundo</tag> ' Cuando la envio haci no funciona

    y haci funciona DCTO = hola mundo

    Mi caso es q no me sirve enviarla asi ya que el webservice me lee un string con formato xml y posee muchas tags ("<" ">")

    Que podria hacer para enviarlo con las tags("<">")   ???

    Gracias por responder


    • Editado scarsx miércoles, 21 de noviembre de 2012 17:37
    miércoles, 21 de noviembre de 2012 15:49
  • Disculpa, en donde te estas basando para decir que tienes que poner un XML adentro de un tag de un XML?

    Es esto lo que quieres hacer?

    Dim XML1 as String
    Dim XML2 as String
    XML1 = "<?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>" & _
        "<GeneraResol xmlns=""http://localhost/wbsResoluciones"">" & _
         "<documento>DOCUMENTO 1</documento>" & _
        "</GeneraResol>" & _
      "</soap:Body>" & _
    "</soap:Envelope>"
    XML2 = "<?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>" & _
        "<GeneraResol xmlns=""http://localhost/wbsResoluciones"">" & _
         "<documento>" & XML1 & "</documento>" & _
        "</GeneraResol>" & _
      "</soap:Body>" & _
    "</soap:Envelope>"

    No se por que siento que algo no esta bien...

    A lo mejor lo quieres hacer es:

    Dim XML1 as String
    Dim DCTO as String
    'Segundo documento
    DCTO = "<tagnum1>Hola</tagnum1>" & _
    "<tagnum2>Mundo!!!</tagnum2>"
    'Primer documento
    XML1 = "<?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>" & _
        "<GeneraResol xmlns=""http://localhost/wbsResoluciones"">" & _
         "<documento>" & DCTO & "</documento>" & _
        "</GeneraResol>" & _
      "</soap:Body>" & _
    "</soap:Envelope>"

    Puedes ver que el "segundo documento" solo son tags y creo que es lo que debes de enviar... solo tags sin encabezado ni soaps...

    Espero que te sea de utilidad.

    Saludos desde Mexico.


    EmmaRmz

    miércoles, 21 de noviembre de 2012 18:25
  • EmmaRmz Lo que estoy haciendo es como tu 2° ejemplo el problema que el webservice no me recibe nada cuando lleva tags el string (DCTO)


    DCTO = "<tagnum1>Hola</tagnum1>" & _
    "<tagnum2>Mundo!!!</tagnum2>"

    En cambio si lo envio sin las tags "<" ">" el Webservice recibe la informacion.

    Y necesito que llegue con Tags para leer el XML (DCTO)

    Saludos

    miércoles, 21 de noviembre de 2012 18:47
  • Creo que deberias ver que es lo que estas enviando antes de enviarlo... tal vez podrias mostrar la variable XML y/o DCTO con un MsgBox o en un TextBox o no se... esto con el fin de que puedas corroborrar que el formato que tienes que enviar es correcto.

    Checalo y nos comentas como te fue...

    Saludos desde Mexico.


    EmmaRmz

    miércoles, 21 de noviembre de 2012 19:41
  • Tuve que reemplazar las tags "<" ">" por otros simbolos como el "*" o el "!" luego en el webservice leo la variable y le hago un replace a esos simbolos por las tags correspondientes "<" para que quede con el formato xml,

    DCTO="*tag! Hola mundo */tag!"

    y en el Webservice

    dcto= Replace(dcto,"*","<")

    dcto=Replace(dcto,"!",">")

    y quedo

    dcto="<tag> Hola Mundo </tag>"

    Fue la unica manera que se me ocurrio de hacerlo.

    Saludos y Gracias.

    miércoles, 21 de noviembre de 2012 21:06
  • Lo resolviste porque corregiste. Estas tratando de enviar html a una variable; por eso el conflicto con las etiquetas html.

    Creo que debes enviar información de texto plana.

    Yo tengo un servicio similar, donde lo que hago es enviar la instrucción sql con la data por POST y recurro a el replace para colocar mis propias etiquetas para definir campos y una para delimitar registro, en local; luego en servidor corto primero en registros y luego campo por campo;recreo cadena y se ejecuta.

    martes, 27 de noviembre de 2012 11:31
  • Estimados, yo necesito enviar un xml a un web service desde vb6. Esta es la sintaxis:

    El VB6 a traves de una consulta SQL, recojo algunos datos.

    teniendo esos datos los debo enviar al web service.

    asi se compone el web service y los datos que necesito enviar deben caer en el campo Datos.

    <html>

        <head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"></head>
        <body style="font-family: Verdana;">
           <form action="ca4xml" method="post">
                <table>
                <tr><td align="right" valign="top">Doc ID:</td><td align="left"><input type="text" name="docid" /></td></tr>
                <tr><td align="right" valign="top">Comando:</td><td align="left"><input type="text" name="comando" /></td></tr>
                <tr><td align="right" valign="top">Parametros:</td><td align="left"><input type="text" name="parametros" /></td></tr>
                <tr><td align="right" valign="top">Datos:</td><td align="left"><textarea name="datos" rows="20" cols="80" ></textarea></td></td>
                <tr><td colspan="2"><input type="submit" /></td></tr>
                </table>
            </form>
        </body>

    <html>

    Agradecido de la ayuda que pueda obtener

    lunes, 18 de noviembre de 2013 20:32
  • Veo en tu HTML que tienes un boton SUBMIT... si las personas del web server te pasaron este HTML entonces podria ser que ellos quieran que les des Submit al codigo... :S  dicho de otra manera: podrias poner tu codigo HTML en un control WebBrowser y que en tiempo de ejecucion se cree el archivo HTML y se abra en el control (tal vez no desees que el usuario vea el control) a ver si funciona... lo unico que te falta agregar al final de tu codigo HTML es una funcion de JavaScript que cuando se habra la pagina "automaticamente" de click en Submit.

    Espero te haya sido de ayuda.

    Saludos desde Mexico.


    EmmaRmz

    martes, 19 de noviembre de 2013 17:06
  • Estimada, me explico de mejor manera.

    El html es como se compone el Web service, en donde el los primeros campos los envío desde textbox desde visual 6. y el ultimo campo "Datos" debo enviar un string xml que se compone de varios campos.

    Ejemplo:

    <Documento>
     <Cabecera>
      <IdDoc>
       <TipoDTE>52</TipoDTE>
       <Folio>200005</Folio>
       <FchEmis>2013-11-11</FchEmis>
       <FchVenc>2014-01-10</FchVenc>
       <IndNoRebaja>HOLA</IndNoRebaja>
       <TipoDespacho>HOLA</TipoDespacho>
       <IndTraslado>HOLA</IndTraslado>
       <FmaPago>HOLA</FmaPago>
       <FchVenc>HOLA</FchVenc>
      </IdDoc>

    etc.....

    Me indican que los campos se separan por pipes "|", las líneas por "}" y el fin de una tabla se indica con "~"

    y ese xml o string debes enviarlo como POST a la url.

    lunes, 25 de noviembre de 2013 21:08
  • Te adjunto una liga que explica como tomar o poner valores a tags de un XML. Ahi tambien te explica como enviar informacion a un web service y como se recibe la respuesta sincronica.

    Saludos desde Mexico.


    EmmaRmz

    • Propuesto como respuesta EmmaRmz sábado, 28 de diciembre de 2013 0:42
    lunes, 25 de noviembre de 2013 22:57