Symbian OS Error -28: java.io.IOExceptionSymbian OS Error -28 對應 KErrNotSupported(功能不支援),通常發生於:
無法在真機遠端除錯 KSoap2 內部流程,但錯誤堆疊指向:
connection.receive(packet);
// 類似層級:
com.sun.midp.io.j2me.datagram.Protocol.receive
推測為 KSoap2 組裝的 SOAP 封包(特別是資料包頭、編碼宣告、命名空間前綴)與 Nokia S60 平台底層 Datagram/HTTP 實作存在相容性缺口。
放棄 KSoap2,改用較舊但經實機驗證的 KSoap (1.x) 版本。雖然功能較簡化,但在目標機型群上穩定性優先。
| 維度 | 建議行動 |
|---|---|
| 庫選型 | 優先選擇經大量真機驗證的版本,而非最新版;建立「支援機型矩陣」文件 |
| 協議層 | 若必須用 KSoap2,嘗試手動調整 SOAP 封包:強制 HTTP 1.0、移除 Chunked 編碼、固定 Content-Length |
| 安全域 | 確認 MIDlet 簽名狀態與權限請求(MIDlet-Permissions),未簽名 MIDlet 的網路存取可能受限 |
| 替代方案 | 考慮輕量級 REST/JSON 方案(手動組裝 HTTP POST + kXML 解析),避開 SOAP 重型協議棧 |
J2ME 時代,Nokia S60 3rd Edition (FP1/FP2) 之間的 Java 實作差異極大。KSoap2 雖支援 JSR 172 (Web Services API),但早期版本對 Symbian 底層 TCP/IP 協議棧的邊界條件處理不完善。此類「模擬器通、真機崩」問題在 2007-2010 年間極為普遍,最終隨著 Android/iOS 統一生態而消失。