使用 `HttpConnection` 發送圖片數據時,發現數據被強制採用 Chunked 編碼,導致服務端無法解析(本機測試卻正常)。Chunked 僅在數據超過 2016 字節時觸發。嘗試設置 HTTP/1.0、1.1 均無效,Socket 發送同樣結果。
參考開源項目,採用 Socket 手動構造 HTTP 請求,繞過平台強制 Chunked 編碼:
StringBuffer sb = new StringBuffer();
sb.append("POST ").append(URL.query).append(" HTTP/1.1\r\n");
sb.append("Host: ").append(URL.host).append("\r\n");
sb.append("Content-type: application/octet-stream\r\n");
sb.append("Content-Length: ").append(data.length).append("\r\n");
sb.append("Connection: close\r\n\r\n");
SocketConnection sc = (SocketConnection) Connector.open("socket://" + URL.host + ":" + URL.port);
OutputStream os = sc.openOutputStream();
os.write(sb.toString().getBytes());
os.write(data);
此法完美解決 J2ME 平台 HttpConnection 強制分塊編碼導致的上傳失敗,服務端代碼保持標準化。