建立自己的MIT App Inventer 2的网络微数据库网络后台

在使用MIT APP Inventor来开发Android应用时,时常会用到TinyWebDB(网络微数据库)这个组件。这个组件用于往网络上存储数据。我们知道在网络上存取数据是APP很重要的一种能力。与常规的网络数据库编程技术比较而言,这个TinyWebDB算是功能相当简陋的。它主要存储类似JSON形式的数据。即“标签=〉值”这种形式的数据,而且一次只能存取一对标签数值。当然,如果在服务器端对字符串加以解析,以此为出发点也可以设计出比较复杂的数据存储应用。目前,TinyWebDB是APPInventor2上唯一的一个网络数据存取接口组件。不过,最特别的是APP Inventor的文档里并没有提及这个TinyWebDB与网络数据库之间的交互细节。所以大家只能在这个组件的服务器属性中填入APP Inventor的官方网络数据库地址,或是使用官方提供的Python脚本来创建自己的数据存取服务。这个当然是让人用起来不太满意的地方,。研究了下,发现其实这个TinyWebDB存取数据的机理并不复杂,本质上就是模拟了一个web请求。下面我就通过具体的手段与步骤来解释TinyWebDB的工作机制,以使我们自己可以搭建自己的TinyWebDB的网络服务程序。

提前声明一下,APP Inventor 2的介绍与使用方法我就不在这里说了,看下面的内容前要确保你已经明白了APP Inventor 2的使用方法,包括在自己的手机上下载版本正确的APP伴侣。如果需要了解详细的信息,可以参考这个网站:http://app.gzjkw.net/login/。这是MIT APP Inventor在中国的一个服务站点。

首先,我们建立一个简单的数据存取的APP如下图:


程序积木部分:


然后我们使用Tcptrance这个工具来观察下,当我们按下“保存数据”这个按钮时,APP对外发出了什么数据:

我门发现这是一条标准的HTTP请求,APP发出的请求文本如图中右上角。可以看到它的类型是Content-Type: application/x-www-form-urlencoded,是一条标准的网页form表单请求。类似于http://192.168.0.3/storedata.asp?getvalue=ERT&...这样的一条请求。处理这个请求的技术手段有很多种,可以是php也可以是asp或者是jsp,你可以会什么就用什么,甚至可以写个Socket的应用程序来响应都可以。都可以取出主体部分。如上的例子,我们发出的字符串是“‘22ERT”。那服务器收到这样的请求该回复什么?怎么回复呢?随便的回复是无法触发TinyWebDB的数据存储完毕事件的。为了了解服务器端返回了什么,我们可以用HTTP接口测试工具来看下服务器的响应信息,这个测试工具是Chrome浏览器的一个插件,叫做PostMan,大家可以去百度上下载。


使用在线HTTP请求测试工具来发一条数据存储请求给一个国内的TinyWebDB存储服务器,看他返回什么:


可以看到头部信息和body的信息。我们可以看到,在主体部分实际上就是一个字符串:["STORED", "getvalue", "%22SDF%22"]。这是一个json的数组字符串。

好了,有了以上的这些信息,我们就可以马上动手来自己实现一个TinyWebDB的存储服务网页了。写个最简单的php页面:

这个页面非常简单,只指明了头部类型和回复了一条字符串。然后启动我们的WAMPSERVER:


(要注意的是,默认情况下WMAPSERVER是离线状态,可以从本机以IP地址访问。但从外部就不可以,所以要先将WampServer置为在线状态)

如果现在你已经连上了手机,并与APP Inventor同步了的话,你可以在最上方的编辑框里任意输入文字,然后按下“保存数据”按钮,这时应该看到最下面的文本编辑框里出现“存取成功”字样,如图:


总结:

1.TinyWebDB使用了标准的HTTP请求来向服务器发送数据;

2.发送的头部参数Accept: application/json;

3.发送的数据是“标签=值”对字符串;

4.服务器回复消息时亦是标准HTTP响应格式,其中:Content-Type: application/jsonrequest要设置正确;

5.回复的主体是一个json的数组字符串,类似:["STORED", "getvalue", "%22SDF%22"]


后边有时间,我们会再说TinyWebDB从网络上取回数据时的过程细节。不过,可以提前告诉大家取值与存入的区别只是在于主体回复的字符串不同,类似:["VALUE", "getvalue", "%22ERT%"]。HTTP头部的文本类型Content-Type: application/jsonrequest是一致的。


  • 10
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值