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(); } } }
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 }
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(); }