0

現在、リクエストがjsonを消費または生成しているときに正しく使用されるGsonプロバイダーを登録しています。

問題は、postデータをbyte []、InputStream、Reader、またはStringのいずれかとして必要とするリクエストがあることです。

「生の」データが必要な理由は、独自の逆シリアル化を行うことを期待しているサードパーティのコードがあるためです。

これらの4つのタイプのどれを期待するようにPostメソッドを指定しても、GsonReaderは文句を言います。

文字列が必要でしたが、BEGIN_OBJECTでした

タイプに応じて異なるエラーが発生しますが、それはすべて、このProvider/MessageBodyReaderを実行したくないという事実に帰着します。

また、PostedデータのAcceptヘッダーとContent-typeヘッダーを制御することもできません。それらはapplication/jsonになります。

4

1 に答える 1

1

フィルタ内のリクエストのaccept/content-typeヘッダーを「変更」できます。したがって、このリクエストでGSONを使用したくないことを認識できる方法がある場合は、ヘッダーを変更するContanerRequestFilterを作成できます。

GSONプロバイダーの使用が、リクエストが一致するメソッドに依存している場合は、該当するメソッドに対してのみContainerRequestFilter(コンテンツタイプヘッダーをjson以外のものに変更する)を適用(返す)ResourceFilterFactoryを実装できます(カスタムアノテーションを使用して、そのようなメソッドにアノテーションを付けます。resourcefilterfactoryでは、渡されたメソッドにそのアノテーションが付けられている場合にのみ、containerrequestfilterを返します。

関連するリンクは次のとおりです。

于 2012-06-08T12:03:39.713 に答える