现在的位置: 首页 > 综合 > 正文

J2ME联网技术

2013年05月30日 ⁄ 综合 ⁄ 共 1350字 ⁄ 字号 评论关闭

通用连接框架Generic Connection Framework 的层次结构

 

 

 

 

 

 

 

 

一个 HTTP 连接有三种状态:setupconnectedclosed

 

一个 HTTP 被打开,且在发送请求之前,所处的状态就是setup。在这个状态下,应用程序需要设置与服务器进行连接的各种信息,用setRequestMethod setRequestProperty 两个方法进行设置;用getRequestMethod getRequestProperty 方法取得参数当前值。当连接关闭的时候,该连接也就进入了closed 状态,在closed 状态下,HttpConnection对象的方法都会变的不可用,不过这里非常强调的就是它打开的InputStream OutputStream 却可能仍然包含数据。

 

例如:

HttpConnection c=(HttpConnection)Connector.open(URL);

InputStream is=c.openInputStream();

c.close();

while((int ch=is.read())!=-1)

{

⋯⋯

}

is.close();

换句话说连接被关闭了,但依然可以读到缓冲区的数据。但不推荐你这么做,最好是处理完所有的工作后,最后关闭连接。

 

 

建立 HTTP 连接

应用程序通过 javax.microedition.io.Connector.open 这个方法打开连接(在这里要提到的是,这个方法可以打开的不仅仅是HTTP 连接,后面所要说的Socket,UDP 连接都要通过这个方法打开的)该方法有3 个版本,分辨是一个参数、两个参数、和三个参数的。而且该方法是静态的。

 

javax.microedition.io.Connector.open(String name)

javax.microedition.io.Connector.open(String name,int mode)

javax.microedition.io.Connector.open(String name int mode, boolean timeout)

 

这个三个参数分别是连接的字符串、读写的类型(

javax.microedition.io.Connector.READ

javax.microedition.io.Connector.WRITEjavax.microedition.io.Connector.READ_WRITE)和超时的时候是否抛出异常。

 

一般情况我们只用到第一个就好了。其中的name 这个参数必须以URL形式提供。比如http://www.j2medev.com。打开一个连接的时候,在服务器响应之前都可能阻塞应用线程。在开发应用程序的时候,一定要确保把打开连接的代码放到一个单独线程中。

如下建立连接的一个例子:

HttpConnection c= (HttpConnection) Connector.open("http://www.j2medev.com");

得到HttpConnection 对象后,建立的连接处于setup 的状态。

 

设置 HTTP 请求头

 

请求头的类型

HTTP 协议提供了许多的头标类型,使MIDlet 设备和HTTP 服务器就发送和接收内容上的一些问题进行协商:


抱歉!评论已关闭.