2013-08-01 19 views
1

我有一個基於球衣的web服務,它產生如下的「多部分/混合」響應: 該方法讀取一個文件,並且應該以八位字節格式返回它。multipart/mixed和application/octet-stream

@GET 
     @Produces("multipart/mixed") 
     public byte[] getDocumentContents(@Context HttpHeaders header){ 
    .... 
    .... 
    .... 
    os = new ByteArrayOutputStream(); 
    .... 
    .... 
    .... 
    return os; 
    } 

我的問題是:我如何確保響應是在OCTET-STREAM類型?我知道我還可以只標註上面的方法爲:

@Produces("application/octet-stream") 

但我特別要求設置響應內容類型爲「多部分/混合」,而在發送八位字節流格式的文件。

上述方法做到了嗎? 我的假設是,但我沒有具體的原因如何。

謝謝你提前!

回答

1

我不認爲「多/混合」是通過一個REST方法 返回在我看來有效的介質類型,正確的方法是:

@GET 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response getDocumentContents(@HeaderParam("your header param") final YourHeaderParamUserType headerParam) { 
    byte[] outByteArray = ... obtain byte array 
    return Response.ok() 
      .entity(outByteArray) 
      .build(); 
} 

要注意:

  • @Produces(MediaType.APPLICATION_OCTET_STREAM)
  • 你可能想從頭「提取」帕拉姆可以在的功能等使用PARAM被getted:

    @HeaderParam( 「你的頭參數」)最終YourHeaderParamUserType headerParam

你不必在 「YourHeaderParamUserType」 忘卻的唯一一件事情就是:

  • 包括從一個構造函數串
  • ...或包括fromString(字符串)靜態方法
  • ...或包括的valueOf(字符串)靜態方法