none
Error en el documento XML (1, 463). Consumiendo un WebService en visual basic net 2010

    Pregunta

  • Buenas tardes... Estoy tratando de consumir un web service SOAP en visual basic net 2010 con referencia servicio web, con el nombre de metodo ConsultaEstudiantesMatriculadosPago donde toma los siguientes datos: cod_periodo, cod_unidad, cod_modalidad, key

    Y debe regresarme un array  en forma de lista:

    <COD_ESTUDIANTE xsi:type="xsd:string"></COD_ESTUDIANTE>

    <DOC_ID xsi:type="xsd:string"></ DOC_ID >

    El código del formulario es el siguiente:

     Sub CONSUMIR_WEB_SERVICE()
            Dim Ws As New WSServRefWeb.ws_sac
             Try
                 Dim cod_periodo As String = Trim(TxtAñoPeriodo.Text) & "" & Trim(CmbIdPeriodo.Text)
                Dim cod_unidad As String = CodUni
                Dim cod_modalidad As String = CodMod
                Dim Key As String = "******"
                Dim Consumo As Object = Ws.ConsultaEstudiantesMatriculadosPago(cod_periodo, cod_unidad, cod_modalidad, Key)
                Dim Nodoresult(1) As XmlNode
                Nodoresult = Consumo(4)
                RichTextBox1.Text = ""
                RichTextBox1.Text += Nodoresult(0).InnerText + vbLf
                RichTextBox1.Text += Nodoresult(1).InnerText + vbLf
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    La linea de la función del metodo en la pestaña de Refernce es: 

    <System.Web.Services.Protocols.SoapRpcMethodAttribute("http://172.16.1.60/webservice/servers/srv_bucaramanga.php/ConsultaEstudiantesMatriculadosPago", RequestNamespace:="http://172.16.1.60/webservice/servers/", ResponseNamespace:="http://172.16.1.60/webservice/servers/")> _
            Public Function ConsultaEstudiantesMatriculadosPago(ByVal cod_periodo As String, ByVal cod_unidad As String, ByVal cod_modalidad As String, ByVal key As String) As <System.Xml.Serialization.SoapElementAttribute("return")> Object
                Dim results As Object = Me.Invoke("ConsultaEstudiantesMatriculadosPago", New Object() {cod_periodo, cod_unidad, cod_modalidad, key})
                Return results
    End Function

    Arrojandome el siguiente error al momento de consumir el metodo Error en el documento XML (1, 463)...

    por favor ayuda

    viernes, 11 de mayo de 2018 21:45

Todas las respuestas

  • ¿Por qué el servicio web tiene un valor de retorno tipo Object?  ¿Por qué no declarar el resultado como un arreglo?  Así se evita la molestia de leer XML.  Esta es una construcción que nunca había visto.

    Jose R. MCP
    Code Samples

    lunes, 14 de mayo de 2018 5:20
    Moderador
  • Buenas tardes Jose R.

    De que forma puedo declarar el resultado como un arreglo... me puede ayudar por favor?

    martes, 15 de mayo de 2018 21:31
  • ¿Tiene usted el código del web service?

    Jose R. MCP<br/> <a href="http://bit.ly/NcLhrD">Code Samples</a> <a href="https://github.com/webJose">GitHub Repositories</a>

    martes, 15 de mayo de 2018 21:46
    Moderador
  •  <System.Web.Services.Protocols.SoapRpcMethodAttribute("http://172.16.1.60/webservice/servers/srv_bucaramanga.php/ConsultaEstudiantesMatr" & _
               "iculadosPago", RequestNamespace:="http://172.16.1.60/webservice/servers/", ResponseNamespace:="http://172.16.1.60/webservice/servers/")> _
            Public Function ConsultaEstudiantesMatriculadosPago(ByVal cod_periodo As String, ByVal cod_unidad As String, ByVal cod_modalidad As String, ByVal key As String) As <System.Xml.Serialization.SoapElementAttribute("return")> String
                Dim results() As Object = Me.Invoke("ConsultaEstudiantesMatriculadosPago", New Object() {cod_periodo, cod_unidad, cod_modalidad, key})
                Return CType(results(0), String)
            End Function

    martes, 15 de mayo de 2018 22:16
  • Ok, si tiene el código entonces ¿por qué no simplemente deserializar el resultado que produce ConsultaEstudiantesMatriculadosPago en lo que sería una colección de objetos, donde cada objeto representa un elemento dentro del XML?  Esto del lado del webservice.  Luego el webservice devuelve la colección y listo.  Del lado del cliente uno recibe una colección y ya, nada de XML, todo objetos.

    ¿Es WCF o es ASMX?

    No conozco los detalles del XML.  Si muestra un fragmento, sería genial.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    martes, 15 de mayo de 2018 22:46
    Moderador
  • Jose R. la verdad soy nuevo en esto y entiendo muy poco...  sera este es el detalle del XML?

                  <COD_ESTUDIANTE xsi:type="xsd:string"></COD_ESTUDIANTE>

                  <DOC_ID xsi:type="xsd:string"></DOC_ID>

    martes, 15 de mayo de 2018 22:59
  • martes, 15 de mayo de 2018 23:09
  • El código del formulario es el siguiente:

     Sub CONSUMIR_WEB_SERVICE()
            Dim Ws As New WSServRefWeb.ws_sac
             Try
                 Dim cod_periodo As String = Trim(TxtAñoPeriodo.Text) & "" & Trim(CmbIdPeriodo.Text)
                Dim cod_unidad As String = CodUni
                Dim cod_modalidad As String = CodMod
                Dim Key As String = "******"
                Dim Consumo As Object = Ws.ConsultaEstudiantesMatriculadosPago(cod_periodo, cod_unidad, cod_modalidad, Key)
                Dim Nodoresult(1) As XmlNode
                Nodoresult = Consumo(1)
                RichTextBox1.Text = ""
                RichTextBox1.Text += Nodoresult(0).InnerText + vbLf
                RichTextBox1.Text += Nodoresult(1).InnerText + vbLf
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    martes, 15 de mayo de 2018 23:13
  •             <item>

                   <COD_ESTUDIANTE xsi:type="xsd:string">22150583</COD_ESTUDIANTE>

                   <NUM_IDENTIFICACION xsi:type="xsd:string">1002526438</NUM_IDENTIFICACION>

                </item>

                <item>

                   <COD_ESTUDIANTE xsi:type="xsd:string">22180352</COD_ESTUDIANTE>

                   <NUM_IDENTIFICACION xsi:type="xsd:string">1005231577</NUM_IDENTIFICACION>

                </item>

                <item>

                   <COD_ESTUDIANTE xsi:type="xsd:string">22180725</COD_ESTUDIANTE>

                   <NUM_IDENTIFICACION xsi:type="xsd:string">1007369125</NUM_IDENTIFICACION>

                </item>

    <item>

                   <COD_ESTUDIANTE xsi:type="xsd:string">22150494</COD_ESTUDIANTE>

                   <NUM_IDENTIFICACION xsi:type="xsd:string">1007536405</NUM_IDENTIFICACION>

                </item>

                <item>

    martes, 15 de mayo de 2018 23:30
  • Creé un proyecto de ejemplo.  Tiene 3 proyectos:  SampleRepository es un diminuto proyecto que define la clase Person que representa una persona, y tiene un repositorio que devuelve 5 objetos Person.

    Luego el proyecto SampleWCF es el servicio web hecho con WCF.  Es un servicio súper simple y lo único que hace es devolver la lista de personas tal cual las provee el repositorio.

    Finalmente el proyecto SampleWCFClient es un cliente Windows Forms que consume el servicio web.  Utiliza un control DataGridView para mostrar los datos.

    Como verá, el servicio web devuelve una colección de objetos Person.  No devuelve un XML ni nada raro; no necesito traducir nada.

    El proyecto lo encontrará aquí.

    Para mi comodidad, utilicé una biblioteca de clases llamada wj.DataBinding de mi propia creación simplemente para satisfacer el requerimiento de vinculación a datos de Windows Forms rápidamente, pero no es necesario para completar un proyecto WCF.

    En fin, todo debería estar en el ZIP.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    martes, 15 de mayo de 2018 23:53
    Moderador
  • Buenos dias Jose R.  ya me voy a poner a trabajar con esa ayudas que envió... muchísimas gracias y Dios lo bendiga
    miércoles, 16 de mayo de 2018 12:43
  • Buenas tardes Jose R. fue de gran ayuda los archivos... muchisimas gracias

    De casualidad sabes como puedo solucionar este error?

    El tipo de contenido text/xml; charset=ISO-8859-1 del mensaje de respuesta no coincide con el tipo de contenido del enlace (text/xml; charset=utf-8). Si usa un codificador personalizado, asegúrese de que el método IsContentTypeSupported se implemente correctamente. Los primeros 1024 bytes de la respuesta fueron: '<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:ConsultaEstudiantesMatriculadosPagoResponse xmlns:ns1="http://172.16.1.60/webservice/servers/"><return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="unnamed_struct_use_soapval[843]"><item>

    jueves, 17 de mayo de 2018 17:38
  • Viera que nunca me he topado con ese error.  Necesitaría más información, como el método del servicio web y cuál línea provoca el error (que imagino es alguna llamada a una función del servicio web) y saber si usted hace algo distinto a lo estándar en algún momento.

    Si esto es un problema distinto al original, debe cerrar esta conversación e iniciar una nueva para no tener historiales mixtos y para que otros que leen puedan entender mejor de lo que trata la conversación.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 17 de mayo de 2018 18:44
    Moderador
  • ok grcias

    jueves, 17 de mayo de 2018 20:15