
图:支持 HTTP 的 GCF 类
原来的 MIDP 1.0 规范只要求设备支持 HTTP 连接协议,而更新的 MIDP 2.0 规范要求同时支持 HTTP 和 HTTPS,后者提供了对更安全 style="COLOR: #000000" href="http://safe.it168.com/" target=_blank>安全的网络连接的支持。使用这些协议的 API 分别是 HttpConnection 和 HttpConnection 。除了这些强制性的协议,设备制造商可能会选择支持更多的通信协议,如数据包或者套接字。虽然有时会方便一些,但是您应当了解使用特定于厂商的协议会影响应用程序到其他设备的可移植性。
请求和响应协议:HTTP 和 HTTPS 都是请求/响应协议。客户机发送请求,而服务器 style="COLOR: #000000" href="http://server.it168.com/" target=_blank>服务器发送响应。在继续后面的内容之前,我们将分析客户请求和服务器响应的各个方面。
客户请求:客户请求(client request),有时称为请求实体,由以下三个部分组成:
· 请求方法
· 头
· 正文
我们将详细讨论这三个部分。
请求方法:请求方法(request method)确定数据如何发送给远程资源。可以使用的三种方法是 GET、 POST 和 HEADER 。使用 GET 时,数据是作为 URL 的一部分发送的。使用 POST 时,所有客户机数据都是在与建立连接的请求不同的、单独的流中发送的。 HEADER 请求不向服务器发送任何数据。相反, HEADER 请求只是描述(meta)关于远程资源的信息。
用 GET 打开一个 HTTP 连接
String url = "http://www.ucweb.com size=large";
HttpConnection http = null;
http = (HttpConnection) Connector.open(url);
http.setRequestMethod(HttpConnection.GET);
setRequestProperty("User-Agent", "Openwave");
Openwave -- 是一个比较出名的Wap浏览器厂商,因此设置这个UA,移动网关一般可以通过。
用 POST 打开一个 HTTP 连接
String url = "http://www.ucweb.com",
tmp = "test data here";
OutputStream ostrm = null;
HttpConnection http = null;
http = (HttpConnection) Connector.open(url);
http.setRequestMethod(HttpConnection.POST);
// Send client body
ostrm = http.openOutputStream();
byte bytes[] = tmp.getBytes();
for(int i = 0; i < bytes.length; i++)
{
os.write(bytes[i]);
}
os.flush();
POST/GET 请求一般都是在网页中的Form进行指定,如果你乱用这些请求可能会导致一些意外的效果,比如Form指定POST请求,则用GET请求就会出问题。
上面的请求过程只是完成一次HTTP请求中的客户端请求,下面我