2012-06-06 43 views
0

當前我註冊了Gson Provider,當我的請求消耗或生成json時,正確地使用了 。根據請求禁用Jersey提供程序

問題是我有一個請求需要Post數據爲 或者byte[], InputStream, Reader, or String

我需要「原始」數據的原因是我有一些第三方代碼,其中 它預計會做自己的反序列化。

無論這四種類型中的哪一種指定我的Post方法, GsonReader都會抱怨並且是正確的。

預計字符串但BEGIN_OBJECT

根據類型有不同的錯誤,但是這一切都歸結到 事實,我不希望這個供應商/化MessageBodyReader運行。

此外,我無法控制發佈數據的Accept和Content-type標頭。 他們將是應用程序/ json。

回答

1

您可以在過濾器中「修改」請求的接受/內容類型標題。所以,如果有什麼辦法可以認識到對於這個請求,你不想使用GSON,你可以編寫一個修改頭文件的ContanerRequestFilter。

如果使用GSON提供程序取決於請求與之匹配的方法,那麼您可以實現ResourceFilterFactory,將適用的方法應用(返回)ContainerRequestFilter(即將內容類型標頭修改爲除json之外的內容)甚至可以引入一個自定義註釋,註釋這些方法,並在resourcefilterfactory中返回containerrequestfilter,僅當傳遞給它的方法使用該註釋註釋時)。

下面是相關鏈接:

+0

我喜歡這個解決方案的一個例子。在此之前,我選擇了簡單地覆蓋GsonProvider以不反序列化Reader類型。您的解決方案更清晰,可能更符合語義。 – esiegel

相關問題