HTTP 服务控件TWebServer(使用Indy 的TIdHTTPServer 实现)

在开发移动端App的时候,需要使用 WebBrowser 作为平台来展示H5界面,这个时候就需要在App内部实现一个 HttpServer 服务。对于 Delphi 来说,使用 Indy 的 TIdHTTPServer 实在是最好不过了。为了方便使用,我们将 TIdHTTPServer 根据我们的需要进行了封装,这样使用起来会比较方便。本文将详细介绍封装好的控件 TWebServer(有不同需求的可以根据源代码自行修改)。

控件源代码下载

(没有CSDN 分数的,联系QQ:910731685 发给你)

一、控件属性:

序号属性类型说明
1DefaultPortWordHttp服务的端口号,默认:8080
2RootDirstring本地H5文件的根目录。windows下默认在执行文件所在目录中的WWW子目录,android 默认在 TPath.GetDocumentsPath 木下的 WWW 子目录
3MaxConnectionsinteger允许客户端的最大连接数。默认:0 表示不限制。
4ActiveBoolean是否启动 Http 服务,默认: False

二、控件方法:

序号方法类型说明
1StartServerfunction启动Http服务函数 :function StartServer(var errmsg : string) : Boolean。成功: True,启动失败则返回False,同时 errmsg 表示错误信息。
2StopServerprocedure停止Http服务

三、控件事件:

序号事件类型说明
1OnPost事件前端向服务器发送 Post 请求时触发这个事件,本控件只支持字符串参数(流参数未支持)。RequestStr: string; var ResponseStr : string。其中 RequestStr 表示请求参数,ResponseStr 表示返回给前端的字符串参数。
2OnGetParams事件

当前端通过 Get 请求服务,如果没有找到对应的文件,同时也存在请求连接参数或者 form-data 参数,就会触发这个事件。

参数:

URL:请求路径
RequestParamsStr:请求的字符串参数
ResponseStr:返回给前端的字符串

举例如下:
加入前端请求:http://127.0.0.01:8080/Data?Name=sensor&Add=Shenzhen

则事件中的参数如下:
URL:/Data
RequestParamsStr:{"Name":"sensor","Add":"Shenzhen"}  //按照JSON的字符串格式返回
 

四、控件使用:

var
   WebServer : TWebServer;

   WebServer := TWebServer.Create(nil);
   WebServer.DefaultPort := 8080;  //默认就是8080,可以写
   WebServer.OnPost := myOnPost;
   WebServer.OnGetParams := myOnGetParams;
   if not WebServer.StartServer(errmsg) then
      showmessage(errmsg);    //服务器打开失败

五、注意事项:

        1. 把 H5 的文件放置到 RootDir 属性所指的根目录。对于 windows 可以直接拷贝,对于移动端,可以通过 Delphi 的 Deployment 菜单增加,可以包含子目录。

         2. 对于 H5 静态文件系统已经默认处理了,移动App正常情况下也不会 Get 不存在的文件,而且还带参数,所以 OnGetParams 事件根本无需处理。

        3. 在移动 App 成功打开服务后,找到IP地址,在 PC上也是可以访问的。

        4. 如果在 PC上测试,需要注意防火墙限制。

控件已经在 PC 和 android 上测试通过。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值