0

目前我已经注册了一个Gson 提供者,只要我的请求消耗或产生 json,它就会正确使用。

问题是我有一个需要将 Post 数据作为byte[]、InputStream、Reader 或 String的请求。

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

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

应为字符串,但为 BEGIN_OBJECT

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

此外,我无法控制已发布数据的 Accept 和 Content-type 标头。它们将是应用程序/json。

4

1 回答 1

1

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

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

以下是相关链接:

于 2012-06-08T12:03:39.713 回答