APP越来越流行,客户需要开发APP,对习惯了pb开发者来说,如何开发APP是个让人头大的问题。其实pb开发APP是完全可行的。

下面就通过示例,一步步都大家如何开发一个APP。先上几张最终的效果图

     

示例和后面的所有对象可以从 QQ群:345559891 下载

PB开发Http服务

1.建立pb工程

建立workspace命名为test, 建立一个application命名为plugin,创建一个全局函数satrda_service,导入n_satapi对象(对象用于与应用交互)

这些相信各位pb老司机都很熟悉,就不多说了。最后如图:

当我们在浏览器或者应用进行Http请求相应的资源时,会调用到satrda_service,我们在satrda_service里面实现对应的逻辑就行

2.建立业务处理对象

新建一个不可视对象,这里我取名为n_apptest,用于统一处理APP相关的逻辑。

在satrda_service里面添加代码

/**  客户端请求服务器,会首先调用到该函数*  @as_url  url地址*  @al_context http上下文,用于http相关操作*///n_api.of_writejson( al_context, "test show")n_apptest ln_testln_test = create n_apptestln_test.of_init( al_context)ln_test.of_service(as_url)destroy ln_test

of_init主要是保存al_context的值到n_apptest实例变量,便于后面函数调用。主要逻辑在of_service中,我们关心of_service代码就可以

3.响应http文件请求

当浏览器请求相应的文件如 浏览器输入 http://127.0.0.1:5555/pbtest/login.html,会调用到of_service方法里面,此时通过参数as_url的值 /pbtest/login.html可以判断出需要调用login.html,我们只要调用satrda提供的文件输出函数就行了,代码如下

//加载html,css,js等
string ls_path,ls_dirls_path = "myapp/" + as_urln_api.ServeContent(il_context,ls_path)

我们的html和css、js文件等放在server目录下面的myapp目录,所以这里ls_path指定了myapp路径, html和css可以

4.响应http表单请求

当app或者浏览器通过http请求服务时,我们可以响应请求并给出回应,如请求 http://127.0.0.1:5555/pbtest/api/login.do进行登录,通过表单传入了account和password两个数据过来(如何调用的可以参考html或者pb示例)。

//处理登录
if as_url = "api/login.do" thenls_user = n_api.of_formvalue( il_context, "account")ls_pwd = n_api.of_formvalue( il_context, "password")n_api.of_writeLog(n_api.log_debug,"account:" + ls_user)//通过数据库查询ls_user,ls_pwd是否存在,建议通过satrda的连接去查询,更高效//这里不进行查询,直接返回
//  if ls_user = "satrda" and ls_pwd = "satrda" then
//      lbl_login = true
//  end ifll_session = n_api.SessionStart(il_context)if ll_session <> 0 thenn_api.SessionSet(ll_session,"user",ls_user)ls_token = n_api.of_sessionid( ll_session)end if//返回json数据ls_json = '{"success": true,"token":"' + ls_token + '"}'n_api.of_writeLog(n_api.log_debug,"json:" + ls_json)n_api.of_writeJson(il_context,ls_json)return
end if

上面的代码通过

ls_user = n_api.of_formvalue( il_context, "account")
ls_pwd = n_api.of_formvalue( il_context, "password")

取出用户名和密码,可以数据窗口或者嵌入式sql语句判断用户名和密码是否正确,如果正确,那么我们生成一个session(后面讲解)

并给调用端返回一个代表成功的json语句具体见n_api.of_writeJson的定义,这里就不详细说明了

5.Session处理

satrda中的session是保存在服务端的一些信息,实际业务中我们需要在服务端保存一些信息,由于http是无状态的,每次请求都是独立的,所以服务器信息通过session来保存。如每次请求时,如何知道是否已经登录过,某些操作需要登录后才能获取,我们就把登录信息保存在session里。

session相关的操作

ll_session = n_api.SessionStart(il_context) 会按照先后顺序分别从cookies,formdata和url参数中查找是否有存在key为"token"的值,如果存在就把相应的session取出来,如果不存在就会新建一个session

n_api.SessionSet(ll_session,"user",ls_user)把用户名存入到session中,key为user,下次可以通过key取出,见n_api中SessionGet说明

ls_token = n_api.of_sessionid( ll_session)取session的id,这里取出id并通过json方式告诉客户端

6.运行服务

我们通过以上的处理就实现了一个Http服务,只要把pbl或者编译后的pbd放入到指定目录,并进行简单的配置,就可以看到效果了,相当easy。具体配置可以下载示例后看相关的说明。

7.扩展服务

许多第三方服务并没有提供delphi SDK,比如支付宝、微信、七牛、阿里云等,但是提供了java,.net或者C++的SDK。satrda支持直接调用java和.net等语言,具体可以参考插件说明。由于微信小程序、ios应用等都要求https, 同时服务器还支持Https服务。
通过上面的步骤,我们已经完成了服务端的开发,有人可能会问,这个和APP有什么关系,看到的都是网页和服务的开发,别急,通过示例效果应该可以看得出来,这些页面效果其实是针对APP的,通过H5框架可以很容易地实现示例的效果,并且在手机浏览如果需要用到扫描二维码,摄像等功能,还可以打包成android或者ios应用发布。这些内容等待后面的微博介绍吧。心急的同学,可以通过示例页面先熟悉下。

pb一步步开发APP相关推荐

  1. 新建android项目导包,Cordova开发App入门(一)创建android项目

    前言Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的AP ...

  2. java安卓app开发教程_[Android教程] Cordova开发App入门(一)创建android项目

    前言 Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的A ...

  3. android仿喜马拉雅APP状态栏,ReactNative+TypeScript仿喜马拉雅开发App(示例代码)

    ReactNative+TypeScript仿喜马拉雅开发App 融合RN的跨平台能力+TS的全新开发体验 使用RN + TS开发听书App,从需求分析,到功能实现,一步步带领大家完成功能,学会如何解 ...

  4. 阿里程序员跳槽到小外企,再无996!业余时间开发APP,每月广告收入8万多!堪比阿里P8!...

    大家都在追求工资以外的睡后收入,希望实现财富自由.有人在互联网大厂辛辛苦苦996挣钱,有人却能找到捷径顺利实现梦想.一个程序员小哥哥就从阿里跳到了一家小外企,虽然工资少了,但再也不用加班,他利用业余时 ...

  5. appcontroller.php,php用什么开发app接口

    可以使用 REST模式 来开发 App 接口,首先建立一个公共控制器,再建其他控制器继承它即可. 确定好返回的数据内容格式及信息码: (推荐学习:PHP视频教程)<?php // App接口公共 ...

  6. 程序猿,如果下次有人让你帮忙开发App,你就这样回答他

    无论什么公司,只要涉及IT.程序等元素,都会有这样一类人存在.首先一点,他们会编程,并且善钻研.爱挑战.还爱玩儿游戏外加茶水咖啡! 平时他们可以工作到很晚,一到周末也可以呼呼睡到自然醒.在外界看来,他 ...

  7. windowsphone开发_[app开发定制公司]开发app需要什么技术呢?

    [app开发定制公司]开发app需要什么技术呢?APP开发公司为一些人介绍app开发有哪些开发方式,不同类型的APP需要用到哪些开发语言和开发操作系统,企业或者个人用户可以根据自己的需求选择不同的ap ...

  8. rp软件app流程图_如何开发app软件,流程怎样

    好的APP开发公司有哪些 手机app开发分为Android客户端开发.iOS客户端开发.Symbian客户端开发.Windows Phone和BlackBerry OS等定制开发.如果找公司做的话,和 ...

  9. Hybird混合开发APP初学体验

    引用别人的Hybird经验链接 以下为结合自己的项目经验总结 一.react native 它最大的特点就是完全用 JavaScript 进行应用的开发,但是最终会渲染成原生的组件.多端代码复用. 因 ...

  10. python适合做后端开发吗-用Python开发app后端有优势吗

    app后端开发学Python. Python的优点: 1.简单易学 Python 编程语言最大的优点之一,是其具有伪代码的特质,它可以让我们在开发 Python 程序时,专注于解决问题,而不是搞明白语 ...

最新文章

  1. 零基础学习Python需要注意的几个点,Python培训机构排名
  2. php curl选项列表(超详细)
  3. 零基础如何高效学好Java?Java怎么学?
  4. 从零在阿里云服务器上部署一个Springboot博客网站
  5. vue 动态添加路由
  6. [转载] python 去除字符串中指定字符
  7. Ubuntu 16.04 远程桌面
  8. 最全整理:中国人工智能百强企业(100)榜单
  9. ORA-00932: 数据类型不一致: 应为 DATE, 但却获得 NUMBER
  10. android 微信浮窗实现_Android仿微信文章悬浮窗效果
  11. 数据分析大厂面试真题汇总
  12. java获取身份证上的出生日期
  13. Java设计模式之外观模式(门面模式,迪米特法则的具体实现,抽象外观类改进)
  14. Loj #3124. 「CTS2019 | CTSC2019」氪金手游
  15. linux alarm函数使用
  16. 转行做“程序员”很难?这里有几个建议...
  17. 用宅购节当前哨战,京东到家为双十一暗中蓄力
  18. 怎么用计算机求优秀比,计算机考试字处理求所占比值用什么公式
  19. 春招从0到1offer的总结和经验分享
  20. POJ3422 Kaka's Matrix Travels

热门文章

  1. postgresql的下载与安装
  2. 【机器学习】异常检测算法之(KNN)-K Nearest Neighbors
  3. 移除联想M5210阵列卡(3650M5)的缓存模块以开启JBOD模式
  4. Hackintosh(黑苹果)bigsur (opencore引导)超级详细教程
  5. [机器学习入门] 李宏毅机器学习笔记-18 (Deep Generative Model-part 1:深度生成模型-part 1)
  6. verilog:part select
  7. TI-C2000-捕获模块ECAP应用-以欧姆龙E6B2-CWZ6C测速编码器为例
  8. DSP28335 eCAP 测频
  9. Adyen海外支付 - 直付
  10. gds是什么系统简称_气体检测仪GDS系统是什么系统?