Usuario
Enviar un xml a un webservice desde VB 6.0

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
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>" -
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
-
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
-
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
-
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
-
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.
-
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.
-
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
-
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
-
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.