当前位置: 首页 > article >正文

C#高级:用控制台程序模拟WebAPI处理接口请求信息

1.基础Demo

class Program
{
    static void Main()
    {
        // 创建 HttpListener 实例
        HttpListener listener = new HttpListener();

        // 添加监听的前缀(模拟 Web API 路径)
        listener.Prefixes.Add("http://localhost:18110/api/");

        // 启动监听
        listener.Start();
        Console.WriteLine("API Server is running...");

        // 在一个单独的线程中处理请求
        ThreadPool.QueueUserWorkItem(HandleRequests, listener);

        // 持续运行,直到按下任意键停止
        Console.ReadLine();
        listener.Stop();
    }

    // 处理请求的函数
    static void HandleRequests(object obj)
    {
        HttpListener listener = (HttpListener)obj;

        while (listener.IsListening)
        {
            // 获取客户端请求
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            HttpListenerResponse response = context.Response;

            // 根据请求的 URL 路径做不同的处理
            string responseText = string.Empty;
            if (request.Url.AbsolutePath == "/api/hello")
            {
                responseText = "{\"message\":\"Hello, World!\"}";
            }
            else if (request.Url.AbsolutePath == "/api/greet")
            {
                // 从查询字符串获取名字参数
                string name = request.QueryString["name"] ?? "Guest";
                responseText = $"{{\"message\":\"Hello, {name}!\"}}";
            }
            else
            {
                responseText = "{\"error\":\"Invalid API endpoint\"}";
            }

            // 设置响应的内容类型和编码
            byte[] buffer = Encoding.UTF8.GetBytes(responseText);
            response.ContentType = "application/json";
            response.ContentLength64 = buffer.Length;

            // 发送响应
            response.OutputStream.Write(buffer, 0, buffer.Length);
            response.OutputStream.Close();
        }
    }
}

2.使用Postman测试

http://localhost:18110/api/hello
http://localhost:18110/api/greet?name=susu

3.注意事项

端口不能被重复占用,如果有,请换一个端口

Failed to listen on prefix 'http://localhost:18110/api/' because it conflicts with an existing registration on the machine


 


http://www.kler.cn/a/513143.html

相关文章:

  • 【K8S系列】K8s 领域深度剖析:年度技术、工具与实战总结
  • SDL2:Android APP编译使用 -- SDL2多媒体库使用音频实例
  • 虚幻商城 Fab 免费资产自动化入库
  • CentOS9 安装Docker+Dpanel+onlyoffice(https、更改字体、字号、去除限制)的避坑笔记
  • 【数学建模美赛速成系列】O奖论文绘图复现代码
  • vue2使用flv.js在浏览器打开flv格式视频
  • 无人设备航电系统的构成
  • 【gopher的java学习笔记】Java中Service与Mapper的关系详解
  • 深度学习-90-大型语言模型LLM之基于LM Studio本地化部署运行自己的大模型
  • 京华春梦,守岁这方烟火人间
  • 使用ssh推送项目到github
  • Java中如何安全地停止线程?
  • C++入门 详细版
  • Linux - 线程池
  • SpringBoot实现轻量级动态定时任务管控及组件化
  • git原远程仓库无法连接后使用本地仓库将所有分支和tags上传到新远程仓库
  • [答疑]这个消息名是写发送数据还是接收数据
  • 不重启JVM,替换掉已经加载的类
  • Flutter 架构原理
  • ubuntu_查询连接当前服务器的用户ip
  • MongoDB 备份与恢复综述
  • Class ‘com.xxx.xxx‘ not found in module ‘xxxx‘ 解决方法
  • 使用ollama本地部署微调后的大语言模型
  • 包文件分析器 Webpack Bundle Analyzer
  • C# lambda表达式
  • Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat