Principales respuestas
Crear servico web SOAP

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
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 ?
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- Marcado como respuesta Laura CeglzModerator miércoles, 21 de septiembre de 2016 22:03
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 ?
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- Marcado como respuesta Laura CeglzModerator miércoles, 21 de septiembre de 2016 22:03
-
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
-
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