体验下web的内置应用
public partial class WebServerForm : Form
{
public WebServerForm()
{
InitializeComponent();
btnStartServer = new Button
{
Text = "开启WebApi服务",
Location = new Point(500, 500)
};
//点击事件
btnStartServer.Click += StartServer;
Controls.Add(btnStartServer);
}
private Button btnStartServer;
private HttpListener listener;
private Thread listenerThread;
private void StartServer(object sender, EventArgs e)
{
listener = new HttpListener();
listener.Prefixes.Add("http://localhost:5000/API/");
listener.Start();
listenerThread = new Thread(HandleRequestsFunc);
listenerThread.Start();
btnStartServer.Enabled = false;
}
private void HandleRequestsFunc()
{
//持续监听
while (listener.IsListening)
{
try
{
var context = listener.GetContext();
//线程池处理 上下文
ThreadPool.QueueUserWorkItem(o => HandleRequest(context));
}
catch (Exception ex)
{
}
}
}
private string HandleRequest(HttpListenerContext context)
{
var response = context.Response;
var request = context.Request;
try
{
//if (request.HttpMethod == "POST" && request.Url.AbsolutePath == "/API/POSTDATE")
if (request.Url.AbsolutePath == "/API/POSTDATE")
{
string responseString = "响应数据";
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
response.StatusCode = (int)HttpStatusCode.OK;//成功200
using (Stream outputStream = response.OutputStream)
{
outputStream.Write(buffer, 0, buffer.Length);
}
return "1";
}
else
{
response.StatusCode = (int)HttpStatusCode.NotFound;
return "11";
}
//return "11";
}
catch (Exception ex)
{
//
response.StatusCode = (int)HttpStatusCode.InternalServerError;
return "";
}
finally
{
response.Close();
}
}
}