快捷搜索:

在无线J2ME设备上实现http传输(1)

跟着越来越多手提电话和小我数字助理开始融入到信息高速公路之上,从移动设备上造访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 )

您可能还会对下面的文章感兴趣: