Use of HttpListener

2019-04-10 06:44发布

I have the following HTTP listener method, greatly inspired by MSDN's example use of the HttpListener class. I'm fairly new to programming and I'm not sure where to go from here to initialize it from my Main(). Any suggestions?

 public static void HttpListener(string[] prefixes)
    {
        if (prefixes == null || prefixes.Length == 0)
            throw new ArgumentException("Prefixes needed");

        HttpListener listener = new HttpListener();

        foreach (string s in prefixes)
        {
            listener.Prefixes.Add(s);
        }
        listener.Start();
        Console.WriteLine("Listening..");

        HttpListenerContext context = listener.GetContext();
        HttpListenerRequest request = context.Request;
        HttpListenerResponse response = context.Response;

        string responseString = "<HTML><BODY> Test </BODY></HTML>";
        byte[] buffer = Encoding.UTF8.GetBytes(responseString);

        response.ContentLength64 = buffer.Length;
        Stream output = response.OutputStream;
        output.Write(buffer, 0, buffer.Length);

        output.Close();
        listener.Stop();
    }

标签: c# http
2条回答
放我归山
2楼-- · 2019-04-10 06:47

You seem to have removed the comments that are mentioned on the MSDN HttpListener Class page:

// URI prefixes are required, for example "http://contoso.com:8080/index/".

So just call it like that:

public static void Main(string[] args)
{
    HttpListener(new[] { "http://localhost/" });
}

But please note this example will handle only one request and then exit. If your follow-up question is then "How can I make it handle multiple requests?", see Handling multiple requests with C# HttpListener.

查看更多
Rolldiameter
3楼-- · 2019-04-10 07:14

you can do something like this :

   public void ListenTraces()
    {
        httpListener.Prefixes.Add(PORT_HOST);
        try
        {
            httpListener.Start();
        }
        catch (HttpListenerException hlex)
        {
            log.Warn("Can't start the agent to listen transaction" + hlex);
            return;
        }
        log.Info("Now ready to receive traces...");
        while (true)
        {
            var context = httpListener.GetContext(); // get te context 

            log.Info("New trace connexion incoming");
           Console.WriteLine(context.SomethingYouWant);
        }
    }
查看更多
登录 后发表回答