delphi一步步开发H5 APP
来源:互联网 发布:c语言编写加法程序 编辑:程序博客网 时间:2024/06/11 15:23
APP越来越流行,客户需要开发APP,对习惯了用delphi的开发者来说,如何开发APP是个让人头大的问题。其实delphi开发APP是完全可行的。
下面就通过示例,一步步都大家如何开发一个APP。先上几张最终的效果图
示例和后面的所有对象可以从 QQ群:345559891 下载
Delphi开发Http服务
1.建立Dll工程
建立一个dll工程命名为DPlugin, 加入plugin.pas文件,这个文件定义了Http服务相关的api。点DPlugin.dll右键选择View Source,添加导出函数
procedure SatRDA_Service( url:PAnsiChar; context:THandle) ;stdcallbeginend;exports SatRDA_Service;
当我们在浏览器或者应用进行Http请求相应的资源时,会调用到SatRDA_Service,我们在SatRDA_Service里面实现对应的逻辑就行
2.建立业务处理单元
New一个Unit,这里我取名为apptest,创建TAppTest class用于统一处理APP相关的逻辑。
在SatRDA_Service里面添加代码
procedure SatRDA_Service( url:PAnsiChar; context:THandle) ;stdcallvar app:TAppTest;begin app := TAppTest.Create( context); app.Service(url); app.Destroy;end;
Create主要是保存context的值到TAppTest中,方便调用Http相关函数。主要逻辑在Service函数中。
3.响应http文件请求
当浏览器请求相应的文件如 浏览器输入 http://127.0.0.1:5555/dtest/login.html,会调用到Service方法里面,此时通过参数url的值 /dtest/login.html可以判断出需要调用login.html,我们只要调用satrda提供的文件输出函数就行了,代码如下
//加载html,css,js等procedure TAppTest.showPage(url: string);var ls_path:string;begin ls_path := 'myapp/' + url; ServeContent(FContext,PChar(ls_path));end;
我们的html和css、js文件等放在server目录下面的myapp目录,所以这里ls_path指定了myapp路径
4.响应http表单请求
当app或者浏览器通过http请求服务时,我们可以响应请求并给出回应,如请求 http://127.0.0.1:5555/dtest/api/login.do进行登录,通过表单传入了account和password两个数据过来(如何调用的可以参考html或者http调用示例)。
//响应来自H5的函数procedure TAppTest.doapi(url: string);var ls_user,ls_pwd:string; ll_session:THandle; ls_token,ls_json:string;begin if url = 'api/login.do' then begin ls_user := FormValue(FContext,'account'); ls_pwd := Formvalue( FContext, 'password'); //通过数据库查询ls_user,ls_pwd是否存在,建议通过satrda的连接去查询,更高效 //这里不进行查询,也不进行密码验证。// if ls_user = "satrda" and ls_pwd = "satrda" then// lbl_login = true ll_session := SessionStart(FContext); if ll_session <> 0 then begin SessionSet(ll_session,PAnsiChar('user'),PAnsiChar(ls_user)); ls_token := SessionID( ll_session); end; //返回json数据 ls_json := '{"success": true,"token":"' + ls_token + '"}'; writeJson(ls_json); end;end;上面的代码通过
ls_user := FormValue(FContext,'account');
ls_pwd := Formvalue( FContext, 'password');
取出用户名和密码,可以通过查询数据库判断用户名和密码是否正确,如果正确,那么我们生成一个session(后面讲解)
并给调用端返回一个代表成功的json语句具体见writeJson的定义,这里就不详细说明了
5.Session处理
satrda中的session是保存在服务端的一些信息,实际业务中我们需要在服务端保存一些信息,由于http是无状态的,每次请求都是独立的,所以服务器信息通过session来保存。如每次请求时,如何知道是否已经登录过,某些操作需要登录后才能获取,我们就把登录信息保存在session里。
session相关的操作
ll_session := SessionStart(FContext); 会按照先后顺序分别从cookies,formdata和url参数中查找是否有存在key为"token"的值,如果存在就把相应的session取出来,如果不存在就会新建一个session
SessionSet(ll_session,PAnsiChar('user'),PAnsiChar(ls_user));把用户名存入到session中,key为user,下次可以通过key取出,见SessionGet说明
ls_token := SessionID( ll_session);取session的id,这里取出id并通过json方式告诉客户端
6.运行服务
7.扩展服务
- delphi一步步开发H5 APP
- pb一步步开发APP
- h5混合APP开发
- app h5混合开发
- H5+App开发框架汇总
- H5+App开发框架汇总
- 初识H5开发混合APP
- H5 App开发工具 WeX5
- H5+App开发框架汇总
- 深大云网络H5开发app
- HTML5+CSS3 APP开发之 精彩H5
- 关于H5+App的开发注意事项
- 推荐几个H5、app制作开发工具
- 推荐几个H5、app制作开发工具
- app开发利器 delphi xe
- H5开发的web APP和原生APP的区别
- APP,原生和H5开发技术混合开发
- 了解使用HBuilder进行H5的web和app开发
- c++使用jsoncpp(vs2015)
- 学的是什么
- DirectShow做的视频预览时的问题
- Android搜索功能存储本地数据 集合 + SharedPreferences
- uva 10391 Compound Words
- delphi一步步开发H5 APP
- 寻找acm
- PAT甲级1050
- iOS开发之 UIlabel(以后有新发现或者好的用法会补充~)
- 22.哈希表(HashTable)
- CentOS 7的网络配置以及设置主机名和绑定IP的问题
- 关于<c:choose><c:when><c:otherwise>标签的使用
- Android Studio快捷键整理
- C#详解值类型和引用类型区别