### 2022-02-21更新
------ #### MyDbV4 V3.0.2202.2101 - *.[新增]新增HttpServer类,可以非常方便的建立http服务器。
This commit is contained in:
parent
4282403900
commit
6342b9db9d
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -8550,6 +8550,95 @@
|
||||||
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer">
|
||||||
|
<summary>
|
||||||
|
Http服务器类
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer.HttpRequestHandler">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="sender"></param>
|
||||||
|
<param name="e"></param>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandleGETRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Get事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandlePOSTRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Post事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ListenerHost">
|
||||||
|
<summary>
|
||||||
|
监听的主机,默认是localhost
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ErrorMessage">
|
||||||
|
<summary>
|
||||||
|
最后一次错误信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.#ctor(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
在此端口建立Http服务类
|
||||||
|
</summary>
|
||||||
|
<param name="port">端口号</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.IsRunning">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Start">
|
||||||
|
<summary>
|
||||||
|
开始服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Exit">
|
||||||
|
<summary>
|
||||||
|
退出服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Finalize">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpRequest">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.Url">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.PostData">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.UrlReferrer">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.ReturnHtml">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.StatusCode">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:RyWeb.QuickWeb">
|
<member name="T:RyWeb.QuickWeb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,2 +1,2 @@
|
||||||
[Money_Op]
|
[Money_Op]
|
||||||
hwnd=921334
|
hwnd=3813034
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<root>
|
<root>
|
||||||
<list id="LastUpdateTime" Value="2022/1/27 15:20:41" />
|
<list id="LastUpdateTime" Value="2022/2/21 16:14:44" />
|
||||||
<list id="UpdateAfterTime" Value="0" />
|
<list id="UpdateAfterTime" Value="0" />
|
||||||
</root>
|
</root>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -8550,6 +8550,95 @@
|
||||||
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer">
|
||||||
|
<summary>
|
||||||
|
Http服务器类
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer.HttpRequestHandler">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="sender"></param>
|
||||||
|
<param name="e"></param>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandleGETRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Get事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandlePOSTRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Post事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ListenerHost">
|
||||||
|
<summary>
|
||||||
|
监听的主机,默认是localhost
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ErrorMessage">
|
||||||
|
<summary>
|
||||||
|
最后一次错误信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.#ctor(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
在此端口建立Http服务类
|
||||||
|
</summary>
|
||||||
|
<param name="port">端口号</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.IsRunning">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Start">
|
||||||
|
<summary>
|
||||||
|
开始服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Exit">
|
||||||
|
<summary>
|
||||||
|
退出服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Finalize">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpRequest">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.Url">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.PostData">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.UrlReferrer">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.ReturnHtml">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.StatusCode">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:RyWeb.QuickWeb">
|
<member name="T:RyWeb.QuickWeb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -8523,6 +8523,95 @@
|
||||||
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer">
|
||||||
|
<summary>
|
||||||
|
Http服务器类
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer.HttpRequestHandler">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="sender"></param>
|
||||||
|
<param name="e"></param>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandleGETRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Get事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandlePOSTRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Post事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ListenerHost">
|
||||||
|
<summary>
|
||||||
|
监听的主机,默认是localhost
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ErrorMessage">
|
||||||
|
<summary>
|
||||||
|
最后一次错误信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.#ctor(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
在此端口建立Http服务类
|
||||||
|
</summary>
|
||||||
|
<param name="port">端口号</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.IsRunning">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Start">
|
||||||
|
<summary>
|
||||||
|
开始服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Exit">
|
||||||
|
<summary>
|
||||||
|
退出服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Finalize">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpRequest">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.Url">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.PostData">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.UrlReferrer">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.ReturnHtml">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.StatusCode">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:RyWeb.QuickWeb">
|
<member name="T:RyWeb.QuickWeb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -8523,6 +8523,95 @@
|
||||||
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
CookieCollection格式的Cookie集合同时也返回String类型的cookie
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer">
|
||||||
|
<summary>
|
||||||
|
Http服务器类
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpServer.HttpRequestHandler">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="sender"></param>
|
||||||
|
<param name="e"></param>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandleGETRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Get事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:RyWeb.HttpServer.OnHandlePOSTRequest">
|
||||||
|
<summary>
|
||||||
|
当收到Post事件时激发
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ListenerHost">
|
||||||
|
<summary>
|
||||||
|
监听的主机,默认是localhost
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpServer.ErrorMessage">
|
||||||
|
<summary>
|
||||||
|
最后一次错误信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.#ctor(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
在此端口建立Http服务类
|
||||||
|
</summary>
|
||||||
|
<param name="port">端口号</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.IsRunning">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Start">
|
||||||
|
<summary>
|
||||||
|
开始服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Exit">
|
||||||
|
<summary>
|
||||||
|
退出服务
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:RyWeb.HttpServer.Finalize">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RyWeb.HttpRequest">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.Url">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.PostData">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.UrlReferrer">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.ReturnHtml">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RyWeb.HttpRequest.StatusCode">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:RyWeb.QuickWeb">
|
<member name="T:RyWeb.QuickWeb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,4 +1,9 @@
|
||||||
### 2022-02-20更新
|
### 2022-02-21更新
|
||||||
|
------
|
||||||
|
#### MyDbV4 V3.0.2202.2101
|
||||||
|
- *.[新增]新增HttpServer类,可以非常方便的建立http服务器。
|
||||||
|
|
||||||
|
### 2022-02-20更新
|
||||||
------
|
------
|
||||||
#### MyDbV4 V3.0.2202.2001
|
#### MyDbV4 V3.0.2202.2001
|
||||||
- *.[新增]WebDecode类新增UrlToData和GetParam函数。
|
- *.[新增]WebDecode类新增UrlToData和GetParam函数。
|
||||||
|
|
Binary file not shown.
|
@ -93,7 +93,6 @@ namespace Itrycn_Project2
|
||||||
{
|
{
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FrmStart_Shown(object sender, EventArgs e)
|
private void FrmStart_Shown(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ryCommon.Ini ini = new Ini(Soft_ConstInfo.UserDataFolder + "\\Win.dat");
|
ryCommon.Ini ini = new Ini(Soft_ConstInfo.UserDataFolder + "\\Win.dat");
|
||||||
|
|
|
@ -136,6 +136,7 @@
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="RyWeb\HttpHelper.cs" />
|
<Compile Include="RyWeb\HttpHelper.cs" />
|
||||||
|
<Compile Include="RyWeb\HttpServer.cs" />
|
||||||
<Compile Include="RyWeb\QuickWeb.cs" />
|
<Compile Include="RyWeb\QuickWeb.cs" />
|
||||||
<Compile Include="RyWeb\WebDecode.cs" />
|
<Compile Include="RyWeb\WebDecode.cs" />
|
||||||
<Compile Include="SafeCheck\AES.cs" />
|
<Compile Include="SafeCheck\AES.cs" />
|
||||||
|
|
|
@ -32,5 +32,5 @@ using System;
|
||||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||||
// 方法是按如下所示使用“*”: :
|
// 方法是按如下所示使用“*”: :
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("3.0.2202.2001")]
|
[assembly: AssemblyVersion("3.0.2202.2101")]
|
||||||
[assembly: AssemblyFileVersion("3.0.2202.2001")]
|
[assembly: AssemblyFileVersion("3.0.2202.2101")]
|
223
Source/MyDb/RyWeb/HttpServer.cs
Normal file
223
Source/MyDb/RyWeb/HttpServer.cs
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace RyWeb
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Http服务器类
|
||||||
|
/// </summary>
|
||||||
|
public class HttpServer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
public delegate void HttpRequestHandler(object sender, HttpRequest e);
|
||||||
|
/// <summary>
|
||||||
|
/// 当收到Get事件时激发
|
||||||
|
/// </summary>
|
||||||
|
[Description("当收到Get事件时激发")]
|
||||||
|
public event HttpRequestHandler OnHandleGETRequest;
|
||||||
|
/// <summary>
|
||||||
|
/// 当收到Post事件时激发
|
||||||
|
/// </summary>
|
||||||
|
[Description("当收到Post事件时激发")]
|
||||||
|
public event HttpRequestHandler OnHandlePOSTRequest;
|
||||||
|
private HttpListener listener;
|
||||||
|
private Thread httpThread;
|
||||||
|
private volatile bool stopped = false;
|
||||||
|
/// <summary>
|
||||||
|
/// 监听的主机,默认是localhost
|
||||||
|
/// </summary>
|
||||||
|
public string ListenerHost { get; set; } = "localhost";
|
||||||
|
private int port = 19955;
|
||||||
|
/// <summary>
|
||||||
|
/// 最后一次错误信息
|
||||||
|
/// </summary>
|
||||||
|
public string ErrorMessage { get;internal set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
/// 在此端口建立Http服务类
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="port">端口号</param>
|
||||||
|
public HttpServer(int port)
|
||||||
|
{
|
||||||
|
isrunning = false;
|
||||||
|
stopped = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
listener = new HttpListener();
|
||||||
|
this.port= port;
|
||||||
|
listener.Prefixes.Add("http://"+ ListenerHost + ":" + port + "/");
|
||||||
|
//listener.Prefixes.Add(HTTPS_PREFIX + HTTPS_PORT + "/");
|
||||||
|
listener.Start();
|
||||||
|
httpThread = new Thread(new ThreadStart(Run));
|
||||||
|
httpThread.Start();
|
||||||
|
isrunning = true;
|
||||||
|
}
|
||||||
|
catch(Exception ex) { ErrorMessage = ex.Message; }
|
||||||
|
}
|
||||||
|
private bool isrunning = false;
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool IsRunning()
|
||||||
|
{
|
||||||
|
return isrunning;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 开始服务
|
||||||
|
/// </summary>
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
isrunning = false;
|
||||||
|
stopped = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (listener == null || !listener.IsListening)
|
||||||
|
{
|
||||||
|
listener = new HttpListener();
|
||||||
|
listener.Prefixes.Add("http://"+ ListenerHost + ":" + port + "/");
|
||||||
|
//listener.Prefixes.Add(HTTPS_PREFIX + HTTPS_PORT + "/");
|
||||||
|
listener.Start();
|
||||||
|
}
|
||||||
|
if (httpThread == null || httpThread.ThreadState != ThreadState.Running)
|
||||||
|
{
|
||||||
|
httpThread = new Thread(new ThreadStart(Run));
|
||||||
|
httpThread.Start();
|
||||||
|
}
|
||||||
|
isrunning = true;
|
||||||
|
}
|
||||||
|
catch(Exception ex) { ErrorMessage = ex.Message; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 退出服务
|
||||||
|
/// </summary>
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
stopped = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (listener != null)
|
||||||
|
{
|
||||||
|
listener.Stop();
|
||||||
|
listener.Close();
|
||||||
|
}
|
||||||
|
if (httpThread != null)
|
||||||
|
{
|
||||||
|
httpThread.Interrupt();
|
||||||
|
}
|
||||||
|
listener = null;
|
||||||
|
httpThread = null;
|
||||||
|
}
|
||||||
|
catch (Exception ex) { ErrorMessage = ex.Message; }
|
||||||
|
isrunning = false;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
~HttpServer()
|
||||||
|
{
|
||||||
|
Exit();
|
||||||
|
}
|
||||||
|
private void Run()
|
||||||
|
{
|
||||||
|
while (!stopped)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var r = listener.BeginGetContext(new AsyncCallback(RequestHandler), listener);
|
||||||
|
r.AsyncWaitHandle.WaitOne();
|
||||||
|
r.AsyncWaitHandle.Close();
|
||||||
|
}
|
||||||
|
catch (ThreadInterruptedException e1) { ErrorMessage = e1.Message; }
|
||||||
|
catch (HttpListenerException e2)
|
||||||
|
{
|
||||||
|
ErrorMessage = e2.Message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void RequestHandler(IAsyncResult r)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_RequestHandler(r);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
ErrorMessage = e.Message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void _RequestHandler(IAsyncResult r)
|
||||||
|
{
|
||||||
|
if (stopped) return;
|
||||||
|
var l = (HttpListener)r.AsyncState;
|
||||||
|
var ctx = l.EndGetContext(r);
|
||||||
|
var req = ctx.Request;
|
||||||
|
var resp = ctx.Response;
|
||||||
|
var html = "";
|
||||||
|
if(req.HttpMethod=="GET")
|
||||||
|
{
|
||||||
|
HttpRequest e = new HttpRequest();
|
||||||
|
e.Url = req.Url;
|
||||||
|
e.UrlReferrer = req.UrlReferrer;
|
||||||
|
OnHandleGETRequest?.Invoke(this,e);
|
||||||
|
resp.StatusCode = (int)e.StatusCode;
|
||||||
|
html = e.ReturnHtml;
|
||||||
|
}
|
||||||
|
else if(req.HttpMethod=="POST")
|
||||||
|
{
|
||||||
|
HttpRequest e = new HttpRequest
|
||||||
|
{
|
||||||
|
Url = req.Url,
|
||||||
|
UrlReferrer = req.UrlReferrer
|
||||||
|
};
|
||||||
|
var sr = new StreamReader(req.InputStream, Encoding.GetEncoding("GB2312"));
|
||||||
|
e.PostData= sr.ReadToEnd();
|
||||||
|
sr.Close();
|
||||||
|
OnHandlePOSTRequest?.Invoke(this, e);
|
||||||
|
resp.StatusCode = (int)e.StatusCode;
|
||||||
|
html = e.ReturnHtml;
|
||||||
|
}
|
||||||
|
var buffer = Encoding.UTF8.GetBytes(html);
|
||||||
|
resp.ContentLength64 = buffer.Length;
|
||||||
|
resp.OutputStream.Write(buffer, 0, buffer.Length);
|
||||||
|
var outs = resp.OutputStream;
|
||||||
|
outs.Close();
|
||||||
|
resp.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class HttpRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public Uri Url { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string PostData { get; internal set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public Uri UrlReferrer { get; internal set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string ReturnHtml { get; set; } = "";
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public HttpStatusCode StatusCode { get; set; } = HttpStatusCode.OK;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user