Windows では動作するが Ubuntu では動作しない apache CXF アプリケーションがあります。GET リクエストは機能しますが、POST リクエストはメッセージ本文を受け取りません。メッセージを受信するアップロードクラス:
@Path("/api/user/{userId}")
public class Upload {
@POST
@Path("upload")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public FileRecord upload(@PathParam("userId") String userId,
@QueryParam("key") String accessKey,
@Multipart(value="FileRecord", type=MediaType.APPLICATION_JSON) FileRecord fileRecord,
@Multipart(value="BodyRecord", type=MediaType.APPLICATION_OCTET_STREAM) InputStream body) {
fileRecord は ubuntu では null ですが、Windows では問題ありません。
送信するメッセージ: (ヘッダー)
POST http://192.168.1.71:9000/api/user/tdq/upload HTTP/1.1
Accept-Encoding: gzip,deflate
Accept: application/json
MIME-Version: 1.0
content-type: multipart/form-data;boundary="123"
Content-Length: 443
Host: 192.168.1.71:9000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
(体)
--123
Content-Disposition: form-data; name="FileRecord"
Content-Type: application/json
Content-ID: FileRecord
{"FileRecord":{"name":"UploadTest"}}
--123
Content-Disposition: form-data; name="BodyRecord"
Content-Type: application/octet-stream
Content-ID: BodyRecord
This is a body
--123