全面分析MIDP通信API和外部系统交互

本文是MIDP系列的最后一部分,重点介绍了MIDlet如何利用MIDP API与外部系统,尤其是基于servlet的Web系统进行通信。通过一个实际例子展示了如何使用HttpConnection接口进行HTTP交互,包括创建连接、发送请求、接收响应等步骤,以及如何处理返回的XML数据。此外,文章还提到了离线功能和未来J2ME的发展前景。
摘要由CSDN通过智能技术生成
[转载于yesky]

  摘要

  在这个MIDP系列的最后一部分,我将介绍MIDlet和外部系统之间的通信方法。使用Java2 Micro Edition的MIDP中包含的API,开发者可以与外部的系统交互。这篇文章将以一个详细的例子介绍这些API,它演示了J2ME设备和一个基于servlet的Web系统可以进行的交互。

  在前面的两个部分,我介绍的MIDP API的特性和功能都是和设备自身的运作和信息存储相关的。在这个最后的部分,我将集中介绍网络设备和大型网络的交互。

  网络设备可以使用数不清的协议来进行互相通信。在这篇文章中,我将集中介绍HttpConnection接口,你可以通过它来访问存储在一个Web服务器上的信息。在介绍本文的例子之前,我将讨论javax.microedition.io接口和类的交互,而例子则集中介绍一个MIDP设备和一个基于JSP系统之间的交互。

  Connection层次

  javax.microedition.io包中的所有接口都是基于Connection接口的。其它的连接接口继承Connection中的方法,并且定义了用来访问相关变量和该Connection类型动作的方法。我将在本文中谈论最常用的接口,其它的接口留给读者研究。

  HTTPConnection说明

  HTTPConnection接口建立在Connection接口上,它还提供了一些其它的方法来进行HTTP交互。以下就是其中一些有用的方法列表:

String getHeaderField(int index)
String getHeaderField(String name)
long getHeaderFieldDate(String name, long def)
int getHeaderFieldInt(String name, int def)
String getHeaderFieldKey(int n)
String getHost()
long getLastModified()
int getPort()
String getProtocol()
String getQuery()
String getRef()
String getRequestMethod()
String getRequestProperty(String key)
int getResponseCode()
String getResponseMessage()
String getURL()
void setRequestMethod(String method)
void setRequestProperty(String key, String value)

  这些方法可让你如基于servlet的系统一样访问HTTP字段。

  其它的接口在API规范文档中有明确的定义。这些接口带有一些方法,可以使用不同的协议与设备收发数据包或者流数据。在这里我将不会很详细地讨论这些,因为在形式上是一样的。

  Connector对象

  MIDP API如何知道要创建哪个接口并返回给调用的类呢?答案是返回的Connector是根据传送给连接字符串的值。

  以下的连接字符串是提醒Connector对象系统正在查找一个HttpConnection:

HttpConnection httpConn = Connector.open("http://www.itpath.com");

  MIDP Connector对象分析连接的字符串,知道这是一个用作访问网页的URL,于是就会返回一个HttpConnection接口的实现给调用的类。

  其它的连接协议需要不同的连接字符串。下表就是它们的一个列表:

协议 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 连接字符串
Http ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://www.yahoo.com
Stream-based Socket ? ? ? ? ? ? ? ?Socket://localhost:6160
Datagram-based Socket - listening ?datagram://:6160 ?
Datagram-based Socket - sending ? ?datagram://121.232.121.232:6160 ?
Serial Port ? ? ? ? ? ? ? ? ? ? ? ?comm.:0;baudrate=5000
File ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? file://helloWorld.txt ?

  例子

  以下的例子将本文讨论的东西都结合在一起。在这个例子中,MIDlet访问存储在一个远程系统上的信息。该信息以一个XML的形式返回给MIDlet。通过分析该XML,MIDlet就会根据这些数据构造一个用户界面。

  用户界面由一个问题构成。用户提交后将会请求服务器将数据加进去。然后返回更新的数据给用户。

通过这个详细的例子,你可以对J2ME Connection API的基本用法和语法有更进一步的了解。

  VoterMidlet

  VoterMidlet是本例子中唯一的MIDlet。在下载时,它创建VoteResults对象的一个实例:

public class VoterMidlet extends MIDlet implements ScreenCallback
{;
 private Display _display;
 // midlet has three screens
 private VoteResul

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值