将Apache CXF从2.4.0升级到3.1.4后,来自JAX-RS方法的响应的Content-Type
标题已删除了几个属性。
在CXF 2.4.0下,标题为:
Content-Type: multipart/mixed; type="application/octet-stream"; boundary="uuid:61b631f1-0aa9-4cc8-ad85-3c09129ec442"; start="<DocumentName.ext>"; start-info="application/octet-stream"
在CXF 3.1.4下,它是:
Content-Type: multipart/mixed; boundary="uuid:804168d7-70ed-44e7-a471-9647372b9224"
注意:属性type
,start
,start-info
缺失。
以下是我们正在使用的代码:
@GET
@Path( "{order_id}/document/{document_id}/file" )
@Produces("multipart/mixed")
public MultipartBody getDocument( @PathParam( "order_id") int _orderId, @PathParam( "document_id") int _documentId) throws Exception {
FileInfo fileInfo = findFileInfo( _orderId, _documentId );
List<Attachment> atts = new ArrayList<Attachment>();
File internalFile = fileInfo.getActualFile();
String fileName = fileInfo.getOriginalDocumentName();
String fileSize = String.valueOf( internalFile.length() );
ContentDisposition cd = new ContentDisposition("attachment; filename=\"" + fileName + "\"; size=" + fileSize );
InputStream inputStreamToUse = new FileInputStream( internalFile );
Attachment att = new Attachment(fileName, inputStreamToUse, cd);
atts.add( att );
return new MultipartBody(atts, true);
}
我无法在Migration Guides中找到此区域中的任何更改,上述方法的风格似乎与getBooks2() method in the JAX-RS Multipart documentation中的风格相匹配。
任何可能导致不同行为的指导?
答案 0 :(得分:1)
这样做是因为根据http://tools.ietf.org/html/rfc2387显然只有multipart/related
媒体类型可以包含可选的start
和start-info
属性。
有关该主题的更完整的讨论在CXF邮件列表中,特别是this message,表明Content-Type
也已被破坏。