none
Crear servico web SOAP RRS feed

  • Pregunta

  • Hola buenas.

    Estoy intentando crear un servicio web pero no consigo ni recoger la cabecera ni el cuerpo , especialmente la cabecera era para ver si me podríais echar un cable haber si encontramos el error.

    <WebService(Namespace:="http://tempuri.org/")>
    Public Class ServiciosInt
        Inherits System.Web.Services.WebService
        Public unknownHeaders() As SoapUnknownHeader
        <WebMethod(MessageName:="OTA_HotelResNotifRQ")>
        <SoapHeader("unknownHeaders")>
        Public Function ReservasExpedia() As XmlDocument
            Dim XmlPeticion As String
            Dim header As SoapUnknownHeader
            Dim ClasDatosCabecera As DatosCabecera
            Dim aux As XmlElement
            Dim PayLoadInfo As XmlElement
            Dim PayLoadDescription As XmlElement
            Dim Descripcion As XmlElement
            Dim Autentificacion As XmlElement
    
            For Each header In unknownHeaders
                'LibGrl.RegistroLog("Entro en la lectura")
                If header.Element.Name = "Interface" Then
                    'LibGrl.RegistroLog("Tengo datos")
                    aux = header.Element
                    PayLoadInfo = aux.GetElementsByTagName("PayloadInfo")(0)
                    Descripcion = PayLoadInfo.GetElementsByTagName("CommDescriptor")(0)
                    PayLoadDescription = PayLoadInfo.GetElementsByTagName("PayloadDescriptor")(0)
                    ClasDatosCabecera.IdHotelCanal = PayLoadDescription.Attributes("DistributorHotelId").Value
                    Autentificacion = Descripcion.GetElementsByTagName("Authentication")(0)
                    ClasDatosCabecera.Pass = Autentificacion.Attributes("Password").Value
                    ClasDatosCabecera.IdUser = Autentificacion.Attributes("Username").Value
    
                End If
            Next
    
            Dim xml As New XmlDocument
            XmlPeticion = " <Authentication username=""alex"" password=""alex""/>
                            <algo id=""aaabbb""/> "
    
            xml.LoadXml(XmlPeticion)
            Return xml
        End Function

    La url que utilizo para llamar al servicio es http:localhost/ServiciosInt.asmx/OTA_HotelResNotifRQ

    El xml que tiene que enviar el cliente al servicio es:

    <Soap-env:Envelope xmlns : soap-env = "http://schemas.xmlsoap.org/soap/envelope/" >
      <soap-env:Header>
          <Interface xmlns="http://www.newtrade.com/Monto/R14/header" Name="MontoDirectConnect" Version="4.0">
              <PayloadInfo RequestId="22922909" RequestorId="Monto.com" ResponderId="EQCSpecTest" ExpirationDateTime="2016-05-17T21:51:00+00:00" Location="Body">
                  <CommDescriptor SourceId="MontoDC" DestinationId="EQCSpecTest" RetryIndicator="false">
                      <Authentication Username="Monto" Password="Password"/>
                  </CommDescriptor>
                  <PayloadDescriptor Name="OTA_HotelResNotifRQ" Version="2003A">
                      <PayloadReference SupplierHotelCode="1154286" DistributorHotelId="1154286"/>
                  </PayloadDescriptor>
              </PayloadInfo>
          </Interface>
      </soap-env:Header>
      <Soap-env:Body>
        <OTA_HotelResNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="22922909" TimeStamp="2016-05-17T12:21:00-07:00" Target="Production" Version="1.000" PrimaryLangID="en-us" ResStatus="Commit">
            <POS>
                <Source>
                    <RequestorID Type="18" ID="Monto"/>
                    <BookingChannel Type="2" Primary="true">
                        <CompanyName>Monto</CompanyName>
                    </BookingChannel>
                </Source>
            </POS>
        </OTA_HotelResNotifRQ>
        </soap-env:Body>
    </soap-env:Envelope>

    he estado jugando bastante con SoapHeader pero no me da resultado , alguien sabe porque , gracias

     
    • Editado woofer696 viernes, 16 de septiembre de 2016 14:37
    viernes, 16 de septiembre de 2016 14:37

Respuestas

  • hola

    no recomendaria que el servicio retorne un xml de esa forma

    Public Function ReservasExpedia() As XmlDocument

    deberias devolver el xml como string

    hasta donde recuero el objeto xmldocumet tiene problemas de serializacion

    >>especialmente la cabecera era para ver si me podríais echar un cable haber si encontramos el error.

    pero obtienes un mensaje concreto de error ?

    Usar encabezados SOAP

    para el header necesitas definir una clase que herede de SoapHeader

    Pero no entiendo porque aqui

    Public unknownHeaders() As SoapUnknownHeader

    usas los "()", eso esta de mas, no se trata de un array

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 16 de septiembre de 2016 16:14

Todas las respuestas

  • hola

    no recomendaria que el servicio retorne un xml de esa forma

    Public Function ReservasExpedia() As XmlDocument

    deberias devolver el xml como string

    hasta donde recuero el objeto xmldocumet tiene problemas de serializacion

    >>especialmente la cabecera era para ver si me podríais echar un cable haber si encontramos el error.

    pero obtienes un mensaje concreto de error ?

    Usar encabezados SOAP

    para el header necesitas definir una clase que herede de SoapHeader

    Pero no entiendo porque aqui

    Public unknownHeaders() As SoapUnknownHeader

    usas los "()", eso esta de mas, no se trata de un array

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 16 de septiembre de 2016 16:14
  • Lo del array lo saque de esta pag de microsoft.

    https://msdn.microsoft.com/es-es/library/system.web.services.protocols.soapunknownheader(v=vs.100).aspx

    respecto a si me da algun error no me da ninguno , pero la cuestion es que el unknownHeaders siempre es nothing  el cuerpo ya no se ni como recogerlo porque si pongo un parametro en la funcion si que me devuelve un error.

    Voy a probar ahora sin el array y devolviendo un string.

    Gracias por las sugerencias

    viernes, 16 de septiembre de 2016 16:33
  • hola

    en el link que puse tambine es de una pagina de microsoft y no lleva ningun array

    >>pero la cuestion es que el unknownHeaders siempre es nothing

    intenta quitando los ()

    sigue el articulo que recomende

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 16 de septiembre de 2016 18:01