Expand|Select|Wrap|Line Numbers
- soapenv:Envelope
- soapenv:Header
- soapenv:Body
More over the exception "Data at the root level is invalid".
I have tried the other way, directly passing the static data by XML and got the response which means that my credentials and server is working fine. But now i have to pass values dynamically, so gotta use C# way. Any help will be appreciated and I shall be really grateful. Its getting pain in the a** -_-
Thanks in advance.
The XML request is
Expand|Select|Wrap|Line Numbers
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
- <soapenv:Header/>
- <soapenv:Body>
- <HotelAvail>
- <HotelAvailRQ Version="1.1" Language="en"> <Login Email="user@mydomain.com" Password="pass" />
- <Paxes>
- <Pax IdPax="1">
- <Age>50</Age>
- </Pax>
- </Paxes>
- <HotelRequest>
- <SearchSegmentsHotels>
- <SearchSegmentHotels Start="2013-08-20" End="2013-08-22" DestinationZone="1953"/> <CountryOfResidence>ES</CountryOfResidence>
- <Boards>
- <Board Type="AD"/>
- </Boards>
- </SearchSegmentsHotels>
- <RelPaxesDist>
- <RelPaxDist>
- <RelPaxes>
- <RelPax IdPax="1"/>
- </RelPaxes>
- </RelPaxDist>
- </RelPaxesDist>
- </HotelRequest>
- </HotelAvailRQ>
- </HotelAvail>
- </soapenv:Body>
- </soapenv:Envelope>
in C# i made like this:
Expand|Select|Wrap|Line Numbers
- XmlDocument XMLDoc1 = new XmlDocument();
- XMLDoc1 = new System.Xml.XmlDocument();
- System.Xml.XmlElement XMLRequest1;
- System.Xml.XmlElement XMLsoapenv;
- System.Xml.XmlElement XMLsoapenv1;
- System.Xml.XmlElement XMLsoapenvHeader;
- System.Xml.XmlElement XMLsoapenvBody;
- System.Xml.XmlElement XMLHotelAvail;
- System.Xml.XmlElement XMLHotelAvailRQ;
- System.Xml.XmlElement XMLLogin;
- System.Xml.XmlElement XMLPaxes;
- System.Xml.XmlElement XMLPaxFirstChild;
- System.Xml.XmlElement XMLHotelRequest;
- System.Xml.XmlElement XMLSearchSegmentsHotels;
- System.Xml.XmlElement XMLSearchSegmentHotels;
- System.Xml.XmlElement XMLCountryOfResidence;
- System.Xml.XmlElement XMLRelPaxesDist;
- System.Xml.XmlElement XMLRelPaxDist;
- System.Xml.XmlElement XMLRelPaxes;
- System.Xml.XmlElement XMLRelPax;
- const string language1 = "en";
- const string email = "email";
- const string password = "pass";
- bool showHotelInfo = true;
- const string interfaceUrl1 = "URL";
- //Declaration
- XmlDeclaration xmlDeclaration = XMLDoc1.CreateXmlDeclaration("1.0", "utf-8", null);
- //root
- XMLsoapenv = XMLDoc1.CreateElement("soapenv:Envelope");
- XMLsoapenv.SetAttribute("xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
- XMLsoapenv.SetAttribute("xmlns", "http://schemas.ourwebservice.com/message/");
- //header
- XMLsoapenvHeader = XMLDoc1.CreateElement("soapenv:Header");
- XMLsoapenv.AppendChild(XMLsoapenvHeader);
- XMLsoapenvBody = XMLDoc1.CreateElement("soapenv:Body");
- XMLHotelAvail = XMLDoc1.CreateElement("HotelAvail");
- XMLHotelAvailRQ = XMLDoc1.CreateElement("HotelAvailRQ");
- XMLHotelAvailRQ.SetAttribute("Version", "1.1");
- XMLHotelAvailRQ.SetAttribute("Language", language1);
- XMLLogin = XMLDoc1.CreateElement("Login");
- XMLLogin.SetAttribute("Email", email);
- XMLLogin.SetAttribute("Password", password);
- XMLHotelAvailRQ.AppendChild(XMLLogin);
- XMLPaxes = XMLDoc1.CreateElement("Paxes");
- XMLPaxFirstChild = XMLDoc1.CreateElement("Pax");
- XMLPaxFirstChild.SetAttribute("IdPax", "1");
- XMLPaxFirstChild.SetAttribute("Age", searchCriteria.FirstChild);
- XMLPaxes.AppendChild(XMLPaxFirstChild);
- XMLHotelAvailRQ.AppendChild(XMLPaxes);
- XMLHotelRequest = XMLDoc1.CreateElement("HotelRequest");
- XMLSearchSegmentsHotels = XMLDoc1.CreateElement("SearchSegmentsHotels");
- XMLSearchSegmentHotels = XMLDoc1.CreateElement("SearchSegmentHotels");
- XMLSearchSegmentHotels.SetAttribute("Start", searchCriteria.CheckInDate);
- XMLSearchSegmentHotels.SetAttribute("End", searchCriteria.CheckOutDate);
- XMLSearchSegmentHotels.SetAttribute("DestinationZone", "628");
- XMLCountryOfResidence = XMLDoc1.CreateElement("CountryOfResidence", searchCriteria.Country);
- XMLSearchSegmentHotels.AppendChild(XMLCountryOfResidence);
- XMLSearchSegmentsHotels.AppendChild(XMLSearchSegmentHotels);
- XMLHotelRequest.AppendChild(XMLSearchSegmentsHotels);
- XMLRelPaxesDist = XMLDoc1.CreateElement("RelPaxesDist");
- XMLRelPaxDist = XMLDoc1.CreateElement("RelPaxDist");
- XMLRelPaxes = XMLDoc1.CreateElement("RelPaxes");
- XMLRelPax = XMLDoc1.CreateElement("RelPax");
- XMLRelPax.SetAttribute("IdPax", "1");
- XMLRelPaxes.AppendChild(XMLRelPax);
- XMLRelPaxDist.AppendChild(XMLRelPaxes);
- XMLRelPaxesDist.AppendChild(XMLRelPaxDist);
- XMLHotelRequest.AppendChild(XMLRelPaxesDist);
- XMLHotelAvailRQ.AppendChild(XMLHotelRequest);
- XMLHotelAvail.AppendChild(XMLHotelAvailRQ);
- XMLsoapenvBody.AppendChild(XMLHotelAvail);
- XMLsoapenv.AppendChild(XMLsoapenvBody);
- XMLDoc1.AppendChild(XMLsoapenv);
- HttpWebRequest request = CreateWebRequest();
- XmlDocument soapEnvelopeXml = new XmlDocument();
- soapEnvelopeXml.LoadXml(XMLDoc1.ToString());
- try
- {
- Stream stream = request.GetRequestStream();
- soapEnvelopeXml.Save(stream);
- WebResponse response = request.GetResponse();
- var respStream = response.GetResponseStream();
- var memStream = new MemoryStream();
- var buffer = new byte[2048];
- var bytesRead = 0;
- do
- {
- if (respStream != null) bytesRead = respStream.Read(buffer, 0, buffer.Length);
- memStream.Write(buffer, 0, bytesRead);
- } while (bytesRead != 0);
- if (respStream != null) respStream.Close();
- buffer = memStream.ToArray();
- string xml;
- var obj = false;
- if (buffer.Length >= 1024)
- {
- obj = true;
- xml = UnZip(buffer);
- }
- else
- {
- obj = true;
- xml = UnZip(buffer);
- //xml = System.Text.Encoding.ASCII.GetString(buffer);
- }
- //StreamReader rd = new StreamReader(response.GetResponseStream());
- // string soapResult = rd.ReadToEnd();
- System.IO.File.WriteAllText(@"D:\path.txt", xml);
- Console.WriteLine(xml);
- }
- catch (WebException webex)
- {
- WebResponse errResp = webex.Response;
- using (WebResponse response = request.GetResponse())
- {
- using (StreamReader rd = new StreamReader(response.GetResponseStream()))
- {
- string soapResult = rd.ReadToEnd();
- Console.WriteLine(soapResult);
- }
- }
- }
and the Functions
Expand|Select|Wrap|Line Numbers
- public static string UnZip(byte[] byteArray)
- {
- var uncompressed = new StringBuilder();
- using (var memoryStream = new MemoryStream(byteArray))
- {
- using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
- {
- var buffer = new byte[1024];
- int readBytes;
- while ((readBytes = gZipStream.Read(buffer, 0, buffer.Length)) != 0)
- {
- for (var i = 0; i < readBytes; i++)
- uncompressed.Append((char)buffer[i]);
- }
- }
- return uncompressed.ToString();
- }
- }
- public static HttpWebRequest CreateWebRequest()
- {
- HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"http://xml2.bookingengine.es/webservice/jp/operations/availtransactions.asmx?WSDL");
- webRequest.Headers.Add(@"SOAP:Action");
- webRequest.ContentType = "text/xml;charset=\"utf-8\"";
- webRequest.Headers.Add("Accept-Encoding", "gzip");
- webRequest.Accept = "text/xml";
- webRequest.Method = "POST";
- return webRequest;
- }