public void Manipular(HttpListenerResponse resposta, string path)
        {
            var assembly     = Assembly.GetExecutingAssembly();
            var nomeResource = Utilidades.ConverterPathParaNomeAssembly(path);

            var resourceStream = assembly.GetManifestResourceStream(nomeResource);

            if (resourceStream == null)
            {
                resposta.StatusCode = (int)HttpStatusCode.NotFound;
                resposta.OutputStream.Close();
            }
            else
            {
                using (resourceStream)
                {
                    var bytesResource = new byte[resourceStream.Length];

                    resourceStream.Read(bytesResource, 0, (int)resourceStream.Length);

                    resposta.ContentType     = Utilidades.ObterTipoDeConteudo(path);
                    resposta.StatusCode      = (int)HttpStatusCode.OK;
                    resposta.ContentLength64 = resourceStream.Length;

                    resposta.OutputStream.Write(bytesResource, 0, bytesResource.Length);

                    resposta.OutputStream.Close();
                }
            }
        }
コード例 #2
0
        public void Manipular(HttpListenerResponse resposta, string path)
        {
            #region Pegando arquivo de resposta
            // Para que o arquivo seja pego, o mesmo (style.css) deve estar como Embedded Resource em Build Action nas propriedades
            var assembly     = Assembly.GetExecutingAssembly();
            var nomeResource = Utilidades.ConverterPathParaNomeAssembly(path);
            // Acessando arquivo pelo assembly
            var resourceStream = assembly.GetManifestResourceStream(nomeResource);
            #endregion

            #region Retornando arquivo de resposta
            // Se o arquivo não foi encontrado, retornar 404
            if (resourceStream == null)
            {
                resposta.StatusCode = 404;
                resposta.OutputStream.Close();
            }
            else
            {
                using (resourceStream)
                {
                    // Salvando arquivos em um Array de bytes (byteResource)
                    var byteResource = new byte[resourceStream.Length];
                    resourceStream.Read(byteResource, 0, (int)resourceStream.Length);

                    // Definindo o tipo da resposta (css, html ou js)
                    resposta.ContentType = Utilidades.ObterTipoDeConteudo(path);
                    // Definindo o status da requisição
                    resposta.StatusCode = 200;
                    // Tamanho da resposta
                    resposta.ContentLength64 = resourceStream.Length;

                    // Retornando resposta (Array de bytes, indice inicio da leitura, e indice final da leitura)
                    resposta.OutputStream.Write(byteResource, 0, byteResource.Length);

                    // Fechando requisição
                    resposta.OutputStream.Close();
                }
            }
            #endregion
        }
コード例 #3
0
ファイル: WebApplication.cs プロジェクト: 0scaar/Reflection
        private void ManipularRequisicao()
        {
            var httpListener = new HttpListener();

            foreach (var prefixo in _prefixos)
            {
                httpListener.Prefixes.Add(prefixo);
            }

            httpListener.Start();

            var contexto   = httpListener.GetContext();
            var requisicao = contexto.Request;
            var resposta   = contexto.Response;

            var path = requisicao.Url.AbsolutePath;

            if (Utilidades.EhArquivo(path))
            {
                var assembly     = Assembly.GetExecutingAssembly();
                var nomeResourve = Utilidades.ConverterPathParaNomeAssembly(path);

                var resourceStream = assembly.GetManifestResourceStream(nomeResourve);

                if (resourceStream == null)
                {
                    resposta.StatusCode = 404;
                    resposta.OutputStream.Close();
                }
                else
                {
                    var bytesResource = new byte[resourceStream.Length];

                    resourceStream.Read(bytesResource, 0, (int)resourceStream.Length);

                    resposta.ContentType     = Utilidades.BoterTipoDeConteudo(path);
                    resposta.StatusCode      = 200;
                    resposta.ContentLength64 = resourceStream.Length;

                    resposta.OutputStream.Write(bytesResource, 0, bytesResource.Length);

                    resposta.OutputStream.Close();
                }
            }
            else if (path == "/Cambio/MXN")
            {
                var controller     = new CambioController();
                var paginaConteudo = controller.MXN();

                var bufferArquivo = Encoding.UTF8.GetBytes(paginaConteudo);

                resposta.StatusCode      = 200;
                resposta.ContentType     = "text/html; charset=utf-8";
                resposta.ContentLength64 = bufferArquivo.Length;

                resposta.OutputStream.Write(bufferArquivo, 0, bufferArquivo.Length);
                resposta.OutputStream.Close();
            }
            else if (path == "/Cambio/USD")
            {
                var controller     = new CambioController();
                var paginaConteudo = controller.USD();

                var bufferArquivo = Encoding.UTF8.GetBytes(paginaConteudo);

                resposta.StatusCode      = 200;
                resposta.ContentType     = "text/html; charset=utf-8";
                resposta.ContentLength64 = bufferArquivo.Length;

                resposta.OutputStream.Write(bufferArquivo, 0, bufferArquivo.Length);
                resposta.OutputStream.Close();
            }

            httpListener.Stop();
        }