またはとして、JAX-RS リソース メソッドから生のリクエスト ボディにアクセスするにはどうすればよいですjava.io.InputStream
かbyte[]
? MessageBodyReader
コンテナーが特定のリソース クラスまたはメソッドに対してany をバイパスするようにしたいのですが、いくつかのMessageBodyReader
.
私はこれを試しましたが、登録されたMessageBodyReader
s を呼び出し、結果をに割り当てることができませんInputStream
( と同じ問題byte[]
)。
@POST
public Response post(@Context HttpHeaders headers, InputStream requestBody) {
MediaType contentType = headers.getMediaType();
// ...
}
私もこれを試しましたが、コンテナは次のエラーで初期化に失敗します:
SEVERE: 次のエラーと警告が、リソース クラスやプロバイダー クラスで検出されました。 SEVERE: メソッド public javax.ws.rs.core.Response SomeResource.post(javax.servlet.http.HttpServletRequest) の依存関係がインデックス 0 のパラメーターにありません SEVERE: メソッド public javax.ws.rs.core.Response SomeResource.post(javax.servlet.http.HttpServletRequest) は、リソース クラス SomeResource の POST で注釈が付けられており、有効なリソース メソッドとして認識されません。
@POST
public Response post(@Context HttpServletRequest request) {
String contentType = request.getContentType();
InputStream requestBody = request.getInputStream();
// ...
}
@Path
メソッドは、別のリソース クラスのアノテーションを持つメソッドから作成されたサブ リソース クラスにあります。
私はJersey 1.11を使用しています。