上一講介紹了如何利用 Record Store 在終端機儲存資料。本講將闡述 MIDP Java 網路功能。由於 N800 終端僅支援 HTTP 通訊,故以 HTTP 為主要範例。掌握網路連線後,即可開發連接伺服器的多元應用,不再侷限於單機程式。
J2ME 需支援多樣手機終端,各終端網路與檔案 I/O 能力不同。為解決此問題,CLDC 採用 Generic Connection Framework,提供節省空間的網路與 I/O 功能,參考 J2SE 的 java.io 與 java.net 套件,定義 7 個介面,僅規範介面,具體實作由各終端廠商提供。介面說明如下:
| 介面 | 作用 |
|---|---|
| Connection | 其他介面的基礎介面 |
| StreamConnectionNotifier | 具 Socket 通訊連線通知功能 |
| InputConnection | 具接收資料功能 |
| OutputConnection | 具發送資料功能 |
| DatagramConnection | 具 UDP 資料報通訊功能 |
| StreamConnection | 具 Socket 通訊收發功能 |
| ContentConnection | 具通訊內容查詢功能 |
| HttpConnection | 具 HTTP 通訊功能 |
圖 1 展示了介面繼承階層。(原文含圖片,此處保留圖片標籤)

Connection 介面是 Generic Connection Framework 中連線介面的基礎,其他連線介面皆由此衍生。
使用 Connector.open(String connectString) 靜態方法建立連線。例如:
Connection con = Connector.open("https://www.nec-mfriend.com/");
所有連線類型均透過此方法建立,即使連線類型不同,呼叫方式相同,賦予 J2ME 豐富擴展性。連線字串格式為:{protocol}:[{target}][{params}]。支援的協定包括:file(檔案 I/O)、comm(序列埠)、socket、datagram、http(Web 伺服器)。注意:N800 不支援 socket 與 datagram,N820 則支援 socket。
Target 部份指定伺服器位址、連接埠、檔案名等;Params 部份補充額外資訊。open 方法另有多載版本可指定存取模式(READ、WRITE、READ_WRITE)。Connector 另提供 openDataInputStream、openDataOutputStream、openInputStream、openOutputStream 等便利方法。
N800 支援 HTTP 通訊連接 Web 伺服器,可將複雜運算卸載至伺服器。雖 HTTP 為 MIDP 標準,但部分終端可能不支援或有限制。在 N800 使用 HTTP 需遵守:
MIDlet-UseNetwork=YEShttps:// 起算最多 512 位元組,不分大小寫HTTP 通訊由 Request 與 Response 組成,主要三種 Request 方式:GET(請求檔案)、HEAD(請求標頭)、POST(送資料並取得結果)。
讀取伺服器檔案時,需在 HttpConnection 的 setRequestMethod 中指定 HttpConnection.GET:
HttpConnection con = (HttpConnection)Connector.open("https://www.nec-mfriend.com/");
con.setRequestMethod(HttpConnection.GET);
透過 DataInputStream 取得回應:
String res = "";
DataInputStream in = con.openDataInputStream();
int input;
while ((input = in.read()) != -1) {
res += (char)input;
}
in.close();
完整範例程式碼展示了在模擬器中連線伺服器、取得 HTML 內容並輸出至控制台的流程。(原文程式碼省略,保留關鍵邏輯)