/// <summary>
        ///
        /// </summary>
        /// <param name="compressedString"></param>
        /// <returns></returns>
        public string DeCompress(string compressedString, Enum_Encoding eEncoding)
        {
            string sEncoding = EncodingIn(eEncoding);

            string uncompressedString = "";
            int    totalLength        = 0;

            byte[] bytInput = System.Convert.FromBase64String(compressedString);

            byte[] writeData = new byte[bytInput.Length];
            Stream s2        = new InflaterInputStream(new MemoryStream(bytInput));

            while (true)
            {
                int size = s2.Read(writeData, 0, writeData.Length);
                if (size > 0)
                {
                    totalLength        += size;
                    uncompressedString += Encoding.
                                          GetEncoding(sEncoding).GetString(writeData, 0, size);
                }
                else
                {
                    break;
                }
            }
            s2.Close();
            return(uncompressedString);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sEncoding"></param>
        /// <returns></returns>
        public static string EncodingIn(Enum_Encoding eEncoding)
        {
            string sEncoding = "UTF-8";

            switch (eEncoding)
            {
            case Enum_Encoding.Unicode:
                sEncoding = "UTF-16";
                break;

            case Enum_Encoding.UTF7:
                sEncoding = "UTF-7";
                break;

            case Enum_Encoding.UTF8:
                sEncoding = "UTF-8";
                break;

            case Enum_Encoding.UTF32:
                sEncoding = "UTF-32";
                break;

            case Enum_Encoding.ISO88591:
                sEncoding = "UTF-8";
                break;
            }
            return(sEncoding);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sEncoding"></param>
        /// <returns></returns>
        public static Enum_Encoding EncodingOut(string sEncoding)
        {
            sEncoding = sEncoding.ToUpper();
            Enum_Encoding eEncoding = Enum_Encoding.UTF8;

            switch (sEncoding)
            {
            case "UTF-16":
                eEncoding = Enum_Encoding.Unicode;
                break;

            case "UNIDOCE":
                eEncoding = Enum_Encoding.Unicode;
                break;

            case "UTF-7":
                eEncoding = Enum_Encoding.UTF7;
                break;

            case "UTF-8":
                eEncoding = Enum_Encoding.UTF8;
                break;

            case "UTF-32":
                eEncoding = Enum_Encoding.UTF32;
                break;

            case "ISO-8859-1":
                eEncoding = Enum_Encoding.ISO88591;
                break;
            }
            return(eEncoding);
        }
        public string ObtenerHttpWebResponse(string strUrl, Enum_Encoding eEnconding)
        {
            string strHeader = "Accept-Encoding:gzip, deflate";

            return(this.ObtenerHttpWebResponse(strUrl,
                                               "text/xml", "POST", "", "", "", "", eEnconding, strHeader));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="uncompressedString"></param>
        /// <returns></returns>
        public string Compress(string uncompressedString, Enum_Encoding eEncoding)
        {
            string sEncoding = EncodingIn(eEncoding);

            byte[] bytData = Encoding.
                             GetEncoding(sEncoding).GetBytes(uncompressedString);
            MemoryStream ms = new MemoryStream();
            Stream       s  = new DeflaterOutputStream(ms);

            s.Write(bytData, 0, bytData.Length);
            s.Close();
            byte[] compressedData = (byte[])ms.ToArray();
            return(System.Convert.ToBase64String(compressedData, 0, compressedData.Length));
        }
        public XmlDocument CrearXmlDs(DataSet dsData, Enum_Encoding eEncoding)
        {
            string sEncoding   = clsHttpZipper.EncodingIn(eEncoding);
            string sEncoding8  = clsHttpZipper.EncodingIn(Enum_Encoding.UTF8);
            string sEncoding16 = clsHttpZipper.EncodingIn(Enum_Encoding.Unicode);

            XmlDocument   xmlDoc       = new XmlDocument();
            XmlSerializer SerializerRQ = new XmlSerializer(typeof(DataSet));
            StringWriter  WriterRQ     = new StringWriter();

            SerializerRQ.Serialize(WriterRQ, dsData);

            xmlDoc.LoadXml(WriterRQ.ToString());

            xmlDoc.InnerXml = xmlDoc.InnerXml.Replace(sEncoding8, sEncoding);
            xmlDoc.InnerXml = xmlDoc.InnerXml.Replace(sEncoding16, sEncoding);
            xmlDoc.InnerXml = xmlDoc.InnerXml.Replace(sEncoding8.ToLower(), sEncoding);
            xmlDoc.InnerXml = xmlDoc.InnerXml.Replace(sEncoding16.ToLower(), sEncoding);

            return(xmlDoc);
        }
        /// <summary>
        /// Crea un archivo Xml en disco y retorna un documento xml a partir de un datatable
        /// </summary>
        /// <param name="dsData">Dataset que contiene la tabla</param>
        /// <param name="sNameTable">Nombre que se le dara a la tabla para los nodos, si no existe se creara como Referencia</param>
        /// <param name="sPathFile">Ruta fisica donde se creara el xml</param>
        /// <param name="sNameXml">Nombre del Xml, sin extencion</param>
        /// <param name="iIndexTable">Indice de la tabla en el dataset</param>
        /// <returns></returns>
        public XmlDocument CrearXmlTable(DataSet dsData, string sNameTable, string sPathFile, string sNameXml, int iIndexTable, Enum_Encoding eEncoding)
        {
            try
            {
                string sEncoding = clsHttpZipper.EncodingIn(eEncoding);

                XmlDocument xmlDoc = new XmlDocument();
                DataTable   dtData = new DataTable();
                string      sPath  = sPathFile + sNameXml + ".xml";
                dtData = dsData.Tables[iIndexTable];

                if (sNameTable.Length.Equals(0))
                {
                    dtData.TableName = "Referencias";
                }
                else
                {
                    dtData.TableName = sNameTable;
                }

                dtData.WriteXml(sPath);

                xmlDoc.Load(sPath);
                xmlDoc.InnerXml = xmlDoc.InnerXml.Replace("standalone=", "encoding=");
                xmlDoc.InnerXml = xmlDoc.InnerXml.Replace("yes", sEncoding);
                return(xmlDoc);
            }
            catch
            {
                return(null);
            }
        }
        /// <summary>
        /// Obtiene una respuesta de un servicio web a partir de una solicitud xml
        /// </summary>
        /// <param name="strUrl">Dirección del servicio xml</param>
        /// <param name="strContentType">Tipo de contenido de la solicitud</param>
        /// <param name="strMethod">Método de obtención del resultado Get o Post</param>
        /// <param name="strContent">Xml con el detalle de la solicitud</param>
        /// <param name="arrHeaders">Arreglo con las opciones condicionales del encabezado de la solicitud</param>
        /// <returns>cadena con el resultado de la solicitud</returns>
        /// <remarks>
        /// Autor	: José Faustino Posas
        /// Fecha	: 2009-11-03
        /// </remarks>
        public string ObtenerHttpWebResponse(
            string strUrl, string strContentType, string strMethod, string strContent,
            string strProxy, string strProxyUser, string strProxyPassword, Enum_Encoding eEnconding,
            params string[] arrHeaders)
        {
            HttpWebRequest hwrRequest = (HttpWebRequest)WebRequest.Create(strUrl);
            string         strXml     = "";

            foreach (string strHeader in arrHeaders)
            {
                if (strHeader.Length > 0)
                {
                    hwrRequest.Headers.Add(strHeader);
                }
            }

            if (strMethod.Length > 0)
            {
                hwrRequest.Method = strMethod;
            }

            if (strContentType.Length > 0)
            {
                hwrRequest.ContentType = strContentType;
            }

            if (strProxy != null && strProxy != "")
            {
                // 2006-08-08: Edwin. Control para cuando se ejecuta este módulo desde
                // una red que requiere autenticación con proxy
                WebProxy wpProxy;
                wpProxy = WebProxy.GetDefaultProxy();

                wpProxy.Address = new Uri(strProxy);

                // 2006-09-12 EADE
                if (strProxyUser != "")
                {
                    wpProxy.Credentials = new NetworkCredential(strProxyUser, strProxyPassword);
                }

                hwrRequest.Proxy           = wpProxy;
                hwrRequest.KeepAlive       = true;
                hwrRequest.ProtocolVersion = HttpVersion.Version10;
            }

            //Encoding isoEncoding = Encoding.GetEncoding("ISO-8859-1");
            Encoding isoEncoding = Encoding.GetEncoding(clsHttpZipper.EncodingIn(eEnconding));

            if (strContent.Length > 0)
            {
                byte[] postBytes = isoEncoding.GetBytes(strContent);

                hwrRequest.ContentLength = postBytes.Length;
                Stream postStream = hwrRequest.GetRequestStream();
                postStream.Write(postBytes, 0, postBytes.Length);
                postStream.Close();
            }

            HttpWebResponse hwrResponse = (HttpWebResponse)hwrRequest.GetResponse();

            // 2006-10-05 Edwin. Mejora de rendimiento
            Stream       responseStream = clsHttpZipper.GetResponseStream(hwrResponse);
            StreamReader sr             = new StreamReader(responseStream, isoEncoding);
            String       respString     = sr.ReadToEnd();

            if (respString.Contains("\r\n"))
            {
                respString = respString.Replace("\r\n", "");
            }

            XmlDocument Doc = new XmlDocument();

            Doc.LoadXml(respString);
            strXml = Doc.InnerXml;

            hwrResponse.Close();

            if (clsValidaciones.GetKeyOrAdd("HotelBedsReqRes").ToUpper() == "TRUE")
            {
                ExceptionHandled.Publicar("Sistema para Verificar Request & response");
                ExceptionHandled.Publicar(strContent);
                ExceptionHandled.Publicar("Enter Simulado");
                ExceptionHandled.Publicar(strXml);
            }

            return(strXml);
        }
        /// <summary>
        /// Obtiene una respuesta de un servicio web a partir de una solicitud xml
        /// </summary>
        /// <param name="strRequest">Xml de la solicitud</param>
        /// <param name="strUrl">Dirección del servicios xml</param>
        /// <returns>cadena con el resultado de la solicitud</returns>
        /// <remarks>
        /// Autor	: EADE
        /// Fecha	: 2006-06-16
        /// </remarks>
        public string ObtenerHttpWebResponse(string strRequest, string strUrl,
                                             string strProxy, string strProxyUser, string strProxyPassword, Enum_Encoding eEnconding)
        {
            string strHeader = "Accept-Encoding:gzip, deflate";

            return(this.ObtenerHttpWebResponse(strUrl, "text/xml", "POST",
                                               strRequest, strProxy, strProxyUser, strProxyPassword, eEnconding, strHeader));
        }
        /// <summary>
        /// Obtiene a través de web client en resultado de una solicitud xml
        /// </summary>
        /// <param name="strRequest">Contenido de la solicitud</param>
        /// <param name="strUrl">Dirección web del servicio</param>
        /// <returns>cadena con el resultado de la solicitud</returns>
        /// <remarks>
        /// Autor	: EADE
        /// Fecha	: 2006-06-16
        /// </remarks>
        public string ObtenerWebClientResponse(string strRequest, string strUrl,
                                               string strProxy, string strProxyUser, string strProxyPassword, Enum_Encoding eEnconding)
        {
            XmlDocument xmlDoc   = new XmlDocument();
            WebClient   wcClient = new WebClient();

            Encoding isoEncoding = Encoding.GetEncoding(clsHttpZipper.EncodingIn(eEnconding));

            byte[] bytesReq = isoEncoding.GetBytes(strRequest);

            // 2006-09-21: Edwin. Control para cuando se ejecuta este módulo desde
            // una red que requiere autenticación con proxy
            if (strProxy != null && strProxy != "")
            {
                wcClient.BaseAddress = strProxy;
                wcClient.Credentials = new NetworkCredential(strProxyUser, strProxyPassword);
            }

            wcClient.Headers.Add("Content-Type", "text/xml");
            byte[] respBytes = wcClient.UploadData(strUrl, "POST", bytesReq);

            MemoryStream msStream = new MemoryStream(respBytes, false);

            using (StreamReader srReader = new StreamReader(msStream, isoEncoding))
            {
                xmlDoc.Load(srReader);
            }

            return(xmlDoc.InnerXml);
        }
 /// <summary>
 /// Obtiene a través de web client en resultado de una solicitud xml
 /// </summary>
 /// <param name="strRequest">Contenido de la solicitud</param>
 /// <param name="strUrl">Dirección web del servicio</param>
 /// <returns>cadena con el resultado de la solicitud</returns>
 /// <remarks>
 /// Autor	: EADE
 /// Fecha	: 2006-06-16
 /// </remarks>
 public string ObtenerWebClientResponse(string strRequest, string strUrl, Enum_Encoding eEnconding)
 {
     return(ObtenerWebClientResponse(strRequest, strUrl, "", "", "", eEnconding));
 }