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

J2ME 圖片上傳實戰:突破 HttpConnection 分塊編碼限制

     編輯:Java 相關知識

背景與難題

使用 `HttpConnection` 發送圖片數據時,發現數據被強制採用 Chunked 編碼,導致服務端無法解析(本機測試卻正常)。Chunked 僅在數據超過 2016 字節時觸發。嘗試設置 HTTP/1.0、1.1 均無效,Socket 發送同樣結果。

解決方案:Socket 模擬 HTTP 協議

參考開源項目,採用 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);

關鍵點總結

  • 手動構造請求頭,顯式指定 `Content-Length` 與 `Connection: close`。
  • 使用 `application/octet-stream` 通用二進制類型,服務端無需特殊處理,兼容標準 Web 文件上傳邏輯。
  • 測試通過後,構建 multipart/form-data 格式亦無問題。

此法完美解決 J2ME 平台 HttpConnection 強制分塊編碼導致的上傳失敗,服務端代碼保持標準化。

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