using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using System.IO; using System.Net; namespace formula_manage.UserClass { public class HttpSERVER { private static bool isExcute = true; private static HttpListener listener = new HttpListener(); public static void Start() { System.Threading.ThreadPool.QueueUserWorkItem(w => Excute());//单独开启一个线程执行监听消息 } private static void Excute() { if (HttpListener.IsSupported) { if (!listener.IsListening) { listener.Prefixes.Add("http://127.0.0.1:8888/"); //添加需要监听的url listener.Start(); //开始监听端口,接收客户端请求 } while (isExcute) { try { //阻塞主函数至接收到一个客户端请求为止 等待请求 HttpListenerContext context = listener.GetContext(); //解析请求 HttpListenerRequest request = context.Request; //构造响应 HttpListenerResponse response = context.Response; //http请求方式:get,post等等 string httpMethod = request.HttpMethod?.ToLower(); string rawUrl = request.RawUrl;//不包括IP和端口 var Url = request.Url;//全路径 if (httpMethod == "get") { //获取查询参数 var queryString = request.QueryString; // 请求接口 test/method?id=5 //键值对方式 string val = queryString["key"]; //string val = queryString["id"];val的值是5 } else if (httpMethod == "post") { //请求接口 test/postMethod 格式是json //{ // "id":5, // "name":"zs" //} //获取pots请求的请求体,json格式的字符串 var reader = new StreamReader(request.InputStream); var questBody = reader.ReadToEnd(); if (!string.IsNullOrEmpty(rawUrl)) { //这里可以直接用switch这个只是demo if (rawUrl.Equals("/server/uploadgenconnected", StringComparison.OrdinalIgnoreCase)) { if (!string.IsNullOrEmpty(questBody)) { UploadGenConnectedModel model = JsonConvert.DeserializeObject(questBody); if (model != null) { // To Do } } } } } var responseString = string.Empty; // 执行其他业务逻辑 //***************** responseString = JsonConvert.SerializeObject(new { code = 1, msg = "发送成功" }); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); //对客户端输出相应信息. response.ContentLength64 = buffer.Length; //response.StatusCode = 200; //response.ContentType = "text/plain"; //发送响应 using (System.IO.Stream output = response.OutputStream) { output.Write(buffer, 0, buffer.Length); } } catch (Exception exceotion) { //Logger.Error("处理消息异常", exceotion); string str = exceotion.Message; } } } else { //Logger.Info("系统不支持HttpListener"); } } public static void Stop() { isExcute = false; if (listener.IsListening) listener.Stop(); } } public class UploadGenConnectedModel { public bool GenConnected { get; set; } } }