Envío de XML desde VB

Mi "problema" es el siguiente:
Me han pedido que mande un XML, con un formato determinado, a una URL con varios métodos, en concreto la primera prueba es a uno llamado "PutServiceRequest". Y me tiene que devolver cierta información.
Mi intento en VB6 ha sido este:
Dim ObjXML As XMLHTTPRequest
    Set ObjXML = New XMLHTTPRequest
    Dim docxml As MSXML.DOMDocument
    Set docxml = New DOMDocument
    Dim strRuta As String
    docxml.async = False
    Dim ruta As String
    ruta = "C:\Desarrollo\ejemplo.xml"
    If docxml.Load(ruta) Then
        'MsgBox "SI"
    Else
        MsgBox "NO"
    End If
    strRuta = "http://xml.empresa.co.uk/invoke/test.deda/GetServiceRequest"
    ObjXML.open "POST", strRuta, True, "usuario", "Password"
    ObjXML.send docxml
    Set ObjXML = Nothing
    Set docxml = Nothing
Pero el OBJXML me devuelve:
<?xml version="1.0" encoding="UTF-8"?>
<Values version="2.0">
  <value name="$errorDump">com.wm.app.b2b.server.UnknownServiceException: test.sesa:GetServiceRequest
    At com.wm.app.b2b.server.ServerException.<init>(ServerException.java:35)
    At com.wm.app.b2b.server.UnknownServiceException.<init>(UnknownServiceException.java:20)
    At com.wm.app.b2b.server.HTTPInvokeHandler.process(HTTPInvokeHandler.java(Compiled Code))
    At com.wm.app.b2b.server.HTTPDispatch.run(HTTPDispatch.java(Compiled Code))
    At com.wm.util.pool.PooledThread.run(PooledThread.java(Compiled Code))
    At java. Lang. Thread.run(Thread.java:498)
</value>
  <record name="$errorInfo" javaclass="com.wm.util.Values">
    <value name="$errorDump">com.wm.app.b2b.server.UnknownServiceException: test.sesa:GetServiceRequest
    At com.wm.app.b2b.server.ServerException.<init>(ServerException.java:35)
    At com.wm.app.b2b.server.UnknownServiceException.<init>(UnknownServiceException.java:20)
    At com.wm.app.b2b.server.HTTPInvokeHandler.process(HTTPInvokeHandler.java(Compiled Code))
    At com.wm.app.b2b.server.HTTPDispatch.run(HTTPDispatch.java(Compiled Code))
    At com.wm.util.pool.PooledThread.run(PooledThread.java(Compiled Code))
    At java. Lang. Thread.run(Thread.java:498)
</value>
    <null name="$errorMsgId"/>
    <value name="$error">test.deda:GetServiceRequest</value>
    <value name="$localizedError">test.deda:GetServiceRequest</value>
    <value name="$errorType">com.wm.app.b2b.server.UnknownServiceException</value>
    <value name="$user">Default</value>
    <null name="$pipeline"/>
  </record>
  <value name="$error">test.deda:GetServiceRequest</value>
  <value name="$errorType">com.wm.app.b2b.server.UnknownServiceException</value>
</Values>
He hecho otros intentos con .NET pero me termine liando.
¿Alguna sugerencia?
Respuesta
1
En .NET es tan fácil como usar algunos objetos, VB6 está obsoleto y te recomiendo dejarlo de lado. Incluso en .NET se puede usar LINQ to XML que es realmente fácil manejar los archivos XML.
Te dejo unos links para que veas como hacerlo en .NET
http://www.elguille.info/colabora/NET2006/FernandoLuque_ASPyXML.htm
http://es.debugmodeon.com/articulo/leer-y-procesar-un-archivo-xml-desde-vb-net
http://social.msdn.microsoft.com/Forums/es/vbes/thread/7eba457c-2d62-4f0c-a4b0-dbd2191c75d9
http://foro.elhacker.net/net/guardar_datos_en_xml_con_vb_net-t240901.0.html
http://www.elguille.info/colabora/NET2005/Percynet_ArquitecturaXML_en_NETFramework.htm
Si por ahí te aparece algún código en C# y tienes problemas, puedes usar este Convertidor.
http://www.elguille.info/NET/WebServices/deCSaVB_web.aspx
Lo importante a destacar que los ejemplos que te di te dan una idea clara de como trabajar con XML en .NET, abrir, usarlo y generarlo.
Si tienes dudas, me lo haces saber.
Gracias por tu respuesta. Pero a lo mejor no me explique bien.
No tengo problema para generar el XML o trabajar con el documento XML.
Mi problema es una vez que lo tengo ¿qué hago con el?
En .NET intente esto:
Imports System.Net
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ht As HttpWebRequest = WebRequest.Create(http://xml.empresa.co.uk/invoke/test.sesa/putServiceRequest@user:pwd)
        Dim ObjXML As Xml.XmlDocument
        ObjXML = New Xml.XmlDocument
        ObjXML.Load("C:\ejemplo.xml")
        ht.ContentType = "text-xml"
        ht.Method = "POST"
        ht.ContentLength = ObjXML.OuterXml.Length
        Dim resp As HttpWebResponse = CType(ht.GetResponse(), HttpWebResponse)
    End Sub
End Class
Parece que funciona pero en la línea:
        Dim resp As HttpWebResponse = CType(ht.GetResponse(), HttpWebResponse)
Se queda como esperando una respuesta .
¿Voy por buen camino o estoy perdido del todo?
Gracias
En el código no veo problemas, el problema puede estar en la respuesta del servidor del otro lado.
Trata de testear la entrada de forma solitaria, dale más tiempo para la respuesta, son algunas de las recomendaciones que te puedo dar.
Te recomiendo usar XMLHttpRequest.
Te dejo un link del objeto.
http://msdn.microsoft.com/en-us/library/ms535874(VS.85).aspx
Si tienes dudas, me lo haces saber.
Muchas gracias Eduardo.
Me es de gran ayuda saber que voy por buen camino.
¿Cómo puedo testear la entrada de forma solitaria? ¿A qué te refieres con ello? Supongo que sera algo obvio pero soy consciente de mi ignorancia al respecto.
Muchas gracias
Primero cambia de objeto por el XMLHttpRequest.
Segundo, probar el WebService de forma solitaria refiero a que pruebes entrando tu la URL en el navegador y veas que te responde, cuanto se demora y demás, entonces descartas esas posibilidades.
Si tienes dudas, me lo haces saber.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas