开发MIDP联网应用程序
♦引言
在上讲中,我们介绍了如何利用RecordStore把数据保存在终端内。本讲,我们将阐述MIDPJAVA网络的相关功能。由于N800终端只能使用HTTP通信,所以我们将以HTTP为主要范例进行讲解。到目前为止,只能制作终端内的单机型应用程序,如果利用网络,连接网络服务器,那么就能够制作出多种应用程序。
1.利用网络
1.1.GenericConnectionFrameWork
J2ME应该能支持各种手机终端。由于终端不同其网络功能及文件I/O功能也迥然不同,网络和文件I/O关联的图书馆所需的条件也不同。
为了解决上述问题,JSME的CLDC采用了GenericConnectionframework。GenericConnectionframework拥有不同终端所需的省空间网络功能以及文件I/O功能。广泛应用J2SE的java.io和java.net包里的网络、文件I/O功能,并准备7个interface。这样,为能支持各种手机终端的通信功能,只限定interface,在每个手机终端上都能自由安装。不支持手机终端连接的实际安装不能进行。各种interface的说明如表1所示、层次结构如图1所示。
点击图片看大图
表1
图1
1.2.ConnectionInterface
Connectioninterface在GenericConnectionframework中是连接interface的基础interface。其他的连接interface是从Connectioninterface派生而来的。
1.3.Connector类
使用Connector类的static方法open(StringconnectString)入网。
Connectioncon=Connector.open(http://www.nec-mfriend.com/);
ex.1
例如、如ex.1所示,在open方法的自变量中输入“http://www.nec-mfiend.com/”,就可以实现与www.nec-mfriend.com服务器进行http通信。
而GenericConnectionframework的全部链接都是利用Connector类的open方法完成的。也就是说,即使链接类型不同,也能以同样的方法完成。J2ME由于这样的设计而拥有丰富的扩展性,对于上述新的装置它也配备了简单的支持系统。
按照下述形式指定Open方法的自变量。
{protocol}:[{target}][{params}]
在Protocol部分可以指定如下所示的Protocol。
表2
*N800不支持socket通信、数据电报通信,而N820支持socket通信。
在Target部分指定服务器的用户名、端口号和文件名等。若有必要的添加信息则在Params部分指定。
Open方法也可以指定其他的自变量。
staticConnectionopen(StringconnectString,intmode)
从connectString中制作Connection、打开链接,若要使用mode链接则需指定accessmode。在accessmode中,可以指定Connector.READ,Connector.READ_WRITE和Connector.WRITE,若不指定,则为Connector.READ_WRITE。在Protocol中不能指定accessmode时,则放弃IllegalArgumentException。
下表是其他Connector类的static方法。
1.4.HTTP通信
现在,我们对N800所支持的HTTP通信进行阐述。利用HTTP通信可以连接WEB服务器。例如,可以把手机终端难以处理的复杂问题交给WEB服务器处理,得出结果。HTTP通信采用MIDP方法作为标准,但是,采用MIDP作为基本方法的终端却不能进行HTTP通信,或者有很大的限制,这一点请注意。
为能在N800中使用HTTP通信需遵从以下规定。
•要实现MIDlet通信必须在JAD(ADF)文件中设定MIDlet-UseNetwork(参考3.JAD(ADF)文件)为YES。.
•最大发送量为10kbyte。
大于10kbyte时,超出部分被清除,小于10kbyte的数据才是有效的。
•最大接收量为100kbyte。
大于100kbyte时,超出部分被清除,小于100kbyte的数据才是有效的。
•连接处URL
从http://开始,包含http://,最多为512byte。不分大/小写。
HTTP通信由request和response两部分组成。从客户发出的request信息传到服务器,服务器接收request,返还response信息。
HTTP通信主要有下述三种request方式。
接下来,让我们试着用多种request与服务器进行通信。
1.5.利用GET
利用GET可以读取服务器上的文件。在使用GET之前,如下所示需在已完成的HttpConnection方法的setRequestMethod方法中,指定HttpConnection的static变数GET。
HttpConnectioncon=(HttpConnection)Connector.open(http://www.nec-mfriend.com/);
con.setRequestMethod(HttpConnection.GET);
ex.2
如下所示可以利用DataInputStream获取response。
Stringres=;
DataInputStreamin=con.openDataInputStream();
intinput;
while((input=in.read())!=-1){
res=res+(char)input;
}
in.close();
ex.3
以下实际是与服务器通信,获取html文件的sample。为简单介绍sample的操作,得把通信结果,即获取的html文件内容,输入控制台。因此,此sample是以在模拟器上面操作为前提的。
importjava.io.Data
- 基于dsPIC33F系列单片机的应用程序升级方法(04-03)
- 基于TrueFFS的铁路牵引自动化系统应用(10-30)
- 如何为您的下一个应用程序选择嵌入式系统(09-04)
- 高速PCI信号采集卡设计与实现综合实例之:主机应用程序和驱动程序的接口设计(06-04)
- 用户态应用程序直接访问I2C驱动(11-21)
- 浅谈单片机应用程序架构(11-21)