Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 22743|Resposta: 0

[Fonte] Implemente um serviço Http simples com o HttpListener

[Copiar link]
Publicado em 02/12/2015 16:56:31 | | |
O HttpListener fornece um ouvinte de protocolo HTTP simples, programável e controlável. Isso permite que você forneça facilmente alguns serviços Http sem precisar iniciar um grande programa de serviços como o IIS.

Nota: Esta classe está disponível apenas em computadores que rodam sistemas operacionais Windows XP SP2 ou Windows Server 2003.

Os passos gerais para usar serviços Http são os seguintes:

Crie um objeto ouvinte HTTP e inicialize-o
Adicione o prefixo de URI que precisa ser ouvido
Comece a ouvir pedidos dos clientes
Lidar com solicitações Http de clientes
Desligue o ouvinte HTTP
Os passos 3 e 4 podem ser ciclados para fornecer serviços solicitados por múltiplos clientes.

Crie um objeto ouvinte HTTP

Para criar um objeto ouvinte HTTP, basta criar um novo objeto HttpListener.

HttpListener ouvinte = novo HttpListener();

A inicialização requer as seguintes duas etapas

Você pode adicionar o intervalo de URL para ouvir no listener.Prefixos usando a seguinte função:
ouvinte. Prefixos.Add(prefix) //prefixo deve terminar em '/'
Ligue para o ouvinte. Comece() a vincular a porta e comece a ouvir as necessidades do cliente.
Aceitar requisições HTTP

No .net 2.0, o acesso aos objetos de solicitação e resposta usados pela classe HttpListener é fornecido via o objeto HttpListenerContext.

A maneira mais fácil de obter o HttpListenerContext é a seguinte:

HttpListenerContext = ouvinte. GetContext();

Esse método bloqueia a função de chamada até que uma solicitação do cliente seja recebida, e se você quiser melhorar a velocidade de resposta, pode usar o ouvinte do método assíncrono. BeginGetContext() para obter o objeto HttpListenerContext.

Lidar com requisições HTTP

Após obter o HttpListenerContext, você pode obter o objeto que representa a solicitação do cliente através do atributo Request e o objeto que representa a resposta que o HttpListener enviará ao cliente através do atributo Response.

HttpListenerRequest request = contexto. Pedido;
HttpListenerResponse resposta = contexto. Resposta;

O objeto HttpListenerRequest aqui é semelhante ao uso de Request and Response em objetos Asp e HttpListenerResponse, então não vou dizer muito aqui, você pode ver o exemplo abaixo para uso específico.

Desligue o ouvinte HTTP

Chamando o ouvinte. Stop() para desligar o ouvinte e liberar os recursos relevantes

Exemplo de código:

usando o Sistema;
usando System.Collections.Generic;
usando System.Text;

usando System.Net;

namespace ConsoleApplication1
{
    Programa da turma
    {
        Static void Main(string[] args)
        {
            HttpListener ouvinte = novo HttpListener();
            ouvinte. Prefixos. Add("http://localhost/"); Adicione a faixa de URLs que precisam ser ouvidas
            ouvinte. Start(); Comece a ouvir na porta e receba solicitações de clientes
            Console.WriteLine("Ouvindo...");

            Bloqueia a função principal até que uma solicitação do cliente seja recebida
            HttpListenerContext = ouvinte. GetContext();
            HttpListenerRequest request = contexto. Pedido;
            HttpListenerResponse resposta = contexto. Resposta;

            resposta de cadeiaString = string. Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now);
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
            Envie as informações correspondentes para o cliente.
            resposta. ContentLength64 = buffer. Comprimento;
            System.IO.Stream saída = resposta. OutputStream;
            saída. Write(buffer, 0, buffer. Comprimento);
            Feche o fluxo de saída para liberar os recursos correspondentes
            saída. Fechar();

            ouvinte. Stop(); Desligue o HttpListener
        }
    }
}

O programa é relativamente simples: primeiro cria um ouvinte HTTP para implementar o serviço do domínio "http://localhost/time/", quando recebe uma solicitação remota, converte o tempo atual em uma string de saída para o cliente e então fecha o ouvinte.





Anterior:Problemas e soluções para chamadas AJAX cruzadas de domínio para ASP.NET serviços MVC ou WebAPI
Próximo:Em 3 de dezembro de 2015, o site foi oficialmente renomeado para &quot;Code Farmer Network&quot;, sendo notificado!
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com