使用 HttpConnection 上傳圖片遭遇 chunked 編碼導致伺服端無法解析(資料超過 2016 位元組即觸發)。嘗試設定 HTTP 1.0/1.1、Header 均無效。
conn = (HttpConnection) Connector.open(server, Connector.READ_WRITE, true);
conn.setRequestProperty("Content-Type", "application/octet-stream");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Connection", "close"); // 衝突
conn.setRequestMethod(HttpConnection.POST);
os = conn.openOutputStream();
os.write(data);
// 建立 HTTP POST 請求標頭
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");
// Socket 連線傳輸
sc = (SocketConnection) Connector.open("socket://" + URL.host + ":" + URL.port);
is = sc.openInputStream();
os = sc.openOutputStream();
os.write(sb.toString().getBytes());
os.write(data);
測試成功,伺服端可按標準 Web 方式處理(如 Servlet request.getInputStream()),無需特殊處理分塊編碼。同樣適用於 multipart/form-data 檔案上傳格式建構。