作者:ludewig 链接:https://blog.csdn.net/lordwish/article/details/86615077

    C#代码

    1. using System;
    2. using System.Collections.Generic;
    3. using System.IO;
    4. using System.Linq;
    5. using System.Net;
    6. using System.Text;
    7. namespace TestHttpListener
    8. {
    9. class Program
    10. {
    11. static void Main(string[] args)
    12. {
    13. HttpListener listener = new HttpListener();
    14. listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
    15. listener.Prefixes.Add("http://localhost:8899/");
    16. listener.Start();
    17. Console.WriteLine("HttpListener");
    18. listener.BeginGetContext(ListenerHandle, listener);
    19. Console.ReadKey();
    20. listener.Stop();
    21. listener.Close();
    22. }
    23. static int i = 0;
    24. private static void ListenerHandle(IAsyncResult result)
    25. {
    26. HttpListener listener = result.AsyncState as HttpListener;
    27. if (listener == null)
    28. {
    29. return;
    30. }
    31. if (listener.IsListening)
    32. {
    33. HttpListenerContext context = listener.EndGetContext(result);
    34. //解析Request请求
    35. HttpListenerRequest request = context.Request;
    36. switch (request.HttpMethod)
    37. {
    38. case "POST":
    39. break;
    40. case "GET":
    41. foreach (var item in request.QueryString.AllKeys)
    42. {
    43. Console.WriteLine($"Key={item},Value={request.QueryString[item]}");
    44. }
    45. //构造Response响应
    46. HttpListenerResponse response = context.Response;
    47. response.StatusCode = 200;
    48. response.ContentType = "application/json;charset=UTF-8";
    49. response.ContentEncoding = Encoding.UTF8;
    50. response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
    51. StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8);
    52. writer.Write("TestHttpListener " + i++);
    53. writer.Close();
    54. response.Close();
    55. break;
    56. }
    57. listener.BeginGetContext(ListenerHandle, result.AsyncState);
    58. }
    59. }
    60. }
    61. }

    注1
    localhost可以改成本机IP地址

    注2
    启动失败显示拒绝访问时,使用管理员身份运行

    注3
    在另一台机器打开访问没反应时,检查双方的防火墙进行开放端口,或者直接关闭(不推荐)

    注4
    参数的获取

    浏览器输入 http://localhost:8899/?id=4567
    控制台显示
    image.png