Jersey REST-Client - Behandeln Sie den benutzerdefinierten MediaType als MediaType.APPLICATION_JSON

8

Ich schreibe einen REST-Client mit Jersey mit aktiviertem JacksonFeature für einen Webservice, der mich zwingt, seinen benutzerdefinierten Inhaltstyp anzugeben, obwohl es nur normaler JSON ist. Mit anderen Worten, wenn ich das tue:

%Vor%

Der Dienst beschwert sich darüber, dass ich einen ungültigen Inhaltstyp verwende. Ich kann das umgehen, indem ich an Stelle der MediaType.APPLICATION_JSON-Konstante ihren eigenen benannten Medientyp festlege:

%Vor%

Aber wenn ich das tue, bekomme ich:

%Vor%

Gibt es eine Möglichkeit, dass ich Jersey diesen benutzerdefinierten Medientypnamen so behandeln kann, als ob es normaler JSON wäre, ohne einen angepassten MessageBodyWriter zu schreiben?

    
kwikness 02.06.2015, 19:38
quelle

1 Antwort

7

Ich denke, Sie könnten beide dies (JAX-RS Entity Providers) und dies (benutze Jackson mit Jersey) , um zu erreichen, was du willst. Kurz gesagt, registrieren Sie MessageBodyWriter mit @Produces("application/vnd.stupidNameThatReallyIsJustJSON+json") annotiert und delegieren Sie das Marshalling / Unmarshalling in der Implementierung einfach an Jackson.

BEARBEITEN: Versuchen Sie etwas mit

%Vor%

Offensichtlich ist dies nur ein Ausgangspunkt, kein funktionierendes Beispiel, aber es sollte Ihnen genug Informationen geben, um zu beginnen. Denken Sie auch daran, dass Sie die Klasse für Jersey registrieren müssen, damit sie es verwenden kann.

    
francesco foresti 03.06.2015, 12:28
quelle