在无线J2ME设备上实现超文本传输协议

随着越来越多手提电话和个人数字助理开始融入到信息高速公路之上,从移动设备上访问Web站点变得越来越重要。Java开创了消费设备中小型的储存容量的先河,它是用于开发手机、传呼机及其他微型设备应用程序的理想语言。

在本文中,我们将学习如何从一个J2ME客户机上向服务器发送一条HTTP GET请求和一条HTTP POST请求。虽然这只是一篇探讨性质的文章,但是我还是假定读者已经熟悉Java,J2ME,以及Java Midlets(MIDP应用程序)的运作机制。我们将使用J2ME的MIDP简表,并利用SUN的J2ME的无线应用程序开发工具包编译、配置和测试我们的应用程序。对于HTTP服务器,任何WWW地址都可以被访问,但是默认时我们将使用一个简单的Java Servlet来返回我们的HTTP请求的细节。

如何使用J2ME客户机向Web服务器和类似的支持HTTP的服务器发送HTTP请求呢?答案就是使用可在javax.microedition.io程序包中可找到的J2ME的网络类。本文就想具体阐述这个问题。

本文概述∶

使用J2ME设计无线网络应用程序

.发送一条超文本GET请求

.发送一条超文本POST请求

.使用J2ME进行无线网络编程

Java的网络编程能力是相当健壮的。Java 2标准版( J2SE)在java.io和java.net程序包中定义了100多个接口程序,类和异常。通过这些库实现的功能是很强大的,但是这只适用于传统的计算机系统,这些计算机系统有强大的CPU处理能力,快速的内存和持久的数据储存,但是这些在大多数的无线设备上是不现实的。因此,J2ME定义了这些函数的子集,并提供了一套用于网络和文件访问的固定的程序包--- javax.microedition.io程序包。由于可移动设备种类繁多,这个程序包仅仅定义了一套接口,而为每个可移动设备供应厂商留下了实际的应用程序接口实现。这就在可移植性和设备特定特征的应用中找到了一个最佳的平衡点。

定义在javax.microedition.io类中的抽象网络和文件输入输出框架称为通用连接框架(Generic Connection Framework,简称GCF)。GCF定义了一套有关抽象化的内容来描述不同的通信方法。最高级的抽象被称作连接(Connection),还声明了六个接口(四个是直接的,两个是间接的)。这七个接口就构成了J2ME的CLDC的一部分,CLDC是大多数的能使用Java的无线设备使用的配置。设计这个配置的目的就是为所有的CLDC设备(手提电话,双向传呼机,低档的PDA等等)提供公用的网络和文件输入输出能力。虽然GCF的目的是公用网络和文件输入输出框架,但是生产商并不要求实现GCF中声明的所有的接口。有的厂家可以决定只支持socket连接,而其它的厂家可以选择只支持基于数据报的通信。为了促进跨越类似装置的可移植性,MIDP规范要求所有的MIDP设备实现HttpConnection接口。HttpConnection不是GCF的一部分,但是它是从GCF的一个接口ContentConnection衍生出来的。我们将使用HttpConnection接口构造我们样本应用程序。

发送一个HTTP GET请求

这一节将重点解释程序代码,在下一节中我们将只讲述被用来发送HTTP请求并检索由服务器返回的响应通用连接框架接口和HttpConnection接口。创建MIDP用户界面的程序代码见附录。

我们先要定义一个方法来放用于发送HTTP GET请求的代码。因为这个方法中的有些操作有潜在的抛出IOException的可能,所以我们将把这样的意外(exception)抛给调用方法。

public String sendHttpGet( String url ) throws IOException {
HttpConnection hcon = null;
DataInputStream dis = null;
StringBuffer message = "";
try {

第一步是使用Connector类打开一个到服务器的连接,这是GCF的关键。我们将把这个连接强制转换为需要的类型,在本例中为HttpConnection类型。

hcon = ( HttpConnection ) Connector.open( url );

接下来,我们得到HttpConnection上的一个DataInputStream,允许我们一个字符一个字符的读取服务器的响应数据。

dis = new DataInputStream( hcon.openInputStream() );

使用DataInputStream的read ()方法,服务器响应的每个字符都被集中起来放入StringBuffer对象。

int ch;
while ( ( ch = dis.read() ) != -1 ) {
message = message.append( ( char ) ch );
}

最后,连接对象被净空以保存资源,而信息从这个方法中返回。

} finally {
if ( hcon != null ) hcon.close();
if ( dis != null ) dis.close();
}//结束try/finally代码段
return message.toString();
}//结束 sendGetRequest( String )
 如何发送一个HTTP POST请求

时间: 2024-10-08 22:23:36

在无线J2ME设备上实现超文本传输协议的相关文章

浅析FreeBSD超文本传输协议HTTP

由于能够提供图形.声音等多媒体数据,WWW已经成为Internet使用者最喜爱的访问方式,当前的大部分 Internet流量均是由WWW浏览产生的.由于这种多媒体浏览方式的帮助,Internet不再仅仅是由专业人员使用,对计算机了解不多的普通使用者也能进入Internet的世界,享受Internet带来的新鲜内容. 虽然WWW服务非常之流行,然而要建立一个WWW服务器以提供WWW服务却仍然属于专业领域的任务.当前能够提供WWW服务的软件有很多种,分别运行在不同的操作系统之上,其中有一些软件能够运

《PHP精粹:编写高效PHP代码》——3.4节HTTP:超文本传输协议

3.4 HTTP:超文本传输协议HTTP(HyperText Transfer Protocol)是通过导线来传送Web请求和响应的数据传输格式.它包含了很多请求和响应的元数据,除了这些请求或响应的实体之外,我们也可以利用它来使用Web服务.我们也将看到其他的协议,例如XML-RPC和SOAP,它们也都是建立在HTTP基础上的.当我们在本章快结尾构建RESTful服务时,便可以广泛使用HTTP的功能了.当我们开发一个简单的Web应用程序时,可能不会那么重视HTTP.但是如果你想了解缓存.不同文件

超文本传输协议 -- HTTP/1.0 Hyptertext Transfer Protocol

组织:中国互动出版网(http://www.china-pub.com/)RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)E-mail:ouyang@china-pub.com译者:黄晓东(黄晓东  xdhuang@eyou.com)译文发布时间:2001-7-14版权:本中文翻译文档版权归中国互动出版网所有.可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息.   Network Working G

网络传输协议(http协议)_基础知识

概述:指服务器和客户端间进行通信时的约束和规范,客户端与服务端的数据交互并不是杂乱无章的,需要遵照(基于)一定的规范进行 常见的协议: a) HTTP.HTTPS 超文本传输协议 b) FTP 文件传输协议 c) SMTP 简单邮件传输协议 本文主要介绍http超文本传输协议. 1.HTTP协议 即超文本传输协议,网站是基于HTTP协议的,例如网站的图片.CSS.JS等都是基于HTTP协议进行传输的.HTTP协议是由从客户机到服务器的请求(Request)和从服务器到客户机的响应(Respons

无线网关设备使用和调试方法

广义上的"网关"指一个网络连接到另一个网络的"接口",比如一个企业的内部网与外部互联网相连结,就需要一个网关加以管理和控制.它是一种复杂的网络连接设备,可以支持不同协议之间的转换,实现不同协议网络之间的互连. 而所谓的无线网关,是指集成有简单路由功能的无线AP.从某种意义上来说,无线网关方案与宽带路由器方案完全相同:即是说无线网关通过不同设置可完成无线网桥和无线路由器的功能,也可以直接连接外部网络,如WAN,同时实现AP功能. 一.产品选择 目前市面上无线网关产品,

确保无线J2ME的安全

随着移动商业从时髦的口号逐步变成现实,对于移动用户和无线应用程序开发人员这类人 而言,事务安全性正在成为一个重要方面.网络总体安全性的强度取决于其最薄弱的环节, 而在移动商业网络中,最薄弱环节是客户机端设备.无线信号的可截取本质以及大多数手持 设备有限的内存和计算能力,使无线系统极易受到数据窃贼的攻击. 但客户机并非移动商业网络上的唯一薄弱环节.随着 Web 服务技术成为因特网领域中日 益重要的组件,无线网络将面临一些全新的弱点.Web 服务使用开放通信协议并在组织的防 火墙之外运行,当在企业中

《Android应用开发攻略》——3.4 用基于云的测试在多种设备上进行测试

3.4 用基于云的测试在多种设备上进行测试 Ian Darwin3.4.1 问题 你需要在多种设备上测试你的应用.3.4.2 解决方案 使用多种基于Web或者基于云的测试服务.3.4.3 讨论 在Android刚刚出现时,你可能拥有所有类型的设备,你可以在所有设备上测试应用.我有半打用于这一目的的Android设备,其中大部分都已经过时.但是,今天要测试的设备有数百种,其中有些设备还有两三种不同的OS版本,不同的小区无线网络(cell radio)等.对于开发人员来说,拥有足够的设备来测试是不切

在电脑和安卓设备之间使用 FTP 传输文件

每一个使用安卓设备的人都知道可以使用 USB 线连接电脑来传输文件,但是不是所有人都知道可以使用自由开源软件(FOSS 软件)通过无线连接到安卓设备. 我知道,这并非最简易的方式,但这样做的确很有趣而且感觉很极客.所有,如果你有一些 DIY 精神,让我为你展示如何在 Linux 和 安卓设备之间使用 FTP 来传输文件. 第一步:安装必要的软件 为了连接你的安卓设备,至少需要:一个 FTP 服务器和一个 FTP 客户端.这两者都有不少的选择,个人比较推荐 Filezilla 作为客户端,因为它是

在J2ME平台上构建你的邮件程序

程序 在J2ME平台上构建你的邮件程序Jacky Pan Table of Contents1. 教程的介绍和程序的安装 2. 程序的结构 3. 界面的设计 4. 账户的管理 5. MIDlet和Servlet的网络连接 6. Servlet和JavaMail 7. 简单的XML 8. 小结 1.教程的介绍和程序的安装 本教程讲述了如何在J2ME平台上编写一个简单的邮件应用程序,包括界面的设计,邮件的发送/接受,邮件账户的创建/修改/删除,后台Servlet的编写. 为了运行本教程所带的演示程序