首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

適應中國網絡的 J2ME 連網實戰(四):讀取 WML 資料與總結

     編輯:J2ME

延續前幾篇的 HttpConnection 實作,本文示範如何在 CMWAP/CMNET 環境下透過代理模式請求 WML 頁面並解析資料,並總結中國行動網絡開發的關鍵注意事項。

核心程式碼片段

採用執行緒非同步請求,設定 User-Agent、Connection: close 等 Header,支援 CMWAP 代理(10.0.0.172 + X-Online-Host)與 CMNET 直連兩種模式:

private void startRequestHttpImage() {
    new Thread() {
        public void run() {
            HttpConnection conn = null;
            InputStream is = null;
            try {
                append("Start Request");
                conn = (HttpConnection) openConnection(url, netType); // 0=CMNET, 1=CMWAP
                conn.setRequestMethod(HttpConnection.GET);
                conn.setRequestProperty("User-Agent", "Openwave");
                conn.setRequestProperty("Connection", "close");

                if (conn.getResponseCode() == 200) {
                    is = conn.openDataInputStream();
                    byte[] data = readDataFromStream(is, 512);
                    if (data != null) append(Image.createImage(data, 0, data.length));
                }
            } catch (Exception e) { append(e.toString()); }
            finally { closeQuietly(is); closeQuietly(conn); }
        }
    }.start();
}

關鍵輔助方法

  • openConnection(String url, int type):依網路類型建立直連或代理連線。
  • readDataFromStream(InputStream, int bufferSize):分塊讀取輸入流至 ByteArrayOutputStream,回傳 byte[]。

開發注意事項總結

  1. 網路環境適配:CMWAP 需代理 Header,CMNET 直連;聯通 UNIWAP 類似移動,電信 CTWAP 仍無成熟方案。
  2. 請求 Header 設定:User-Agent 必須模擬瀏覽器(如 Openwave),Connection 建議用 close 避免 Keep-Alive 相容性問題。
  3. 緩衝區大小調校:512~1024 bytes 為經驗平衡點,過大反而降低速度。
  4. 平台相容性:不同手機對並發連線、API 行為有差異,需實機測試。
  5. 資源釋放:所有流與連線必須在 finally 區塊關閉,防止洩漏。

運行截圖

掌握上述要點,即可開發出在中國主流行動網絡穩定運行的 J2ME 連網應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved