每个请求禁用Jersey Provider

时间:2012-06-06 20:50:07

标签: java jersey gson jsr311

目前我已正确注册了Gson Provider 在我的请求消耗或生成json时使用。

问题是我有一个需要Post数据的请求 要么是byte[], InputStream, Reader, or String

我需要“原始”数据的原因是我有一些第三方代码 它希望自己进行反序列化。

无论我指定Post方法有哪四种类型, GsonReader会抱怨,这是正确的。

  

预期字符串但是BEGIN_OBJECT

根据类型的不同,会出现不同的错误,但这一切都归结为 事实上,我不希望这个Provider / MessageBodyReader运行。

另外,我无法控制已发布数据的Accept和Content-type标头。 他们将是application / json。

1 个答案:

答案 0 :(得分:1)

您可以在过滤器中“修改”请求的接受/内容类型标头。因此,如果有任何方法可以识别出此请求,您不想使用GSON,则可以编写修改标题的ContanerRequestFilter。

如果使用GSON提供程序依赖于请求与之匹配的方法,则可以实现ResourceFilterFactory,该方法仅适用于适用的方法,应用(返回)ContainerRequestFilter(将内容类型标头修改为json以外的其他类型)(您可以甚至引入一个自定义注释,用它来注释这样的方法,并且只有在传递给它的方法用该注释注释时,才在resourcefilterfactory中返回containerrequestfilter。

以下是相关链接: