Jersey: MessageBodyWriter introuvable pour le type de média = application / json, type = class org.codehaus.jackson.node.ObjectNode?
Je suis en utilisant Jersey 2.8 Client
pour publier des données RESTful point de terminaison. Le code ressemble à
final Client client = ClientBuilder.newClient();
final WebTarget target = client.target(url).path("inventorySummary");
final Invocation.Builder builder = target.request().header("Content-Type", MediaType.APPLICATION_JSON);
final ObjectNode payload = getObjectMapper().createObjectNode();
payload.put("startDate", DateTime.now().toString());
payload.put("endDate", DateTime.now().plusDays(30).toString());
payload.put("networkId", 0);
final Response response = builder.accept(MediaType.APPLICATION_JSON).post(Entity.entity(payload, MediaType.APPLICATION_JSON));
assertStatus(Response.Status.OK.getStatusCode(), response);
final JsonNode jsonReply = parseResponse(response);
getObjectMapper() ressemble
public ObjectMapper getObjectMapper() {
return new ObjectMapper()
.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false /* force ISO8601 */)
.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true)
.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING, true)
.setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS);
}
Lorsque j'essaie d'exécuter le test, je vois l'erreur comme
MessageBodyWriter not found for media type=application/json, type=class org.codehaus.jackson.node.ObjectNode, genericType=class org.codehaus.jackson.node.ObjectNode
Ce qui me manque ici?
Grâce
source d'informationauteur daydreamer
Vous devez vous connecter pour publier un commentaire.
Si vous ok à l'aide de Jackson 1.x, alors vous avez besoin de 3 choses.
1. Ajoutez Maillot de Jackson à votre pom.xml:
2. Créer un
ContextResolver
:3. Inscrire des fournisseurs avec
ClientBuilder
:J'ai ajouté un commentaire ci-dessus en indiquant que l'ajout de X avait travaillé.
Cependant, l'adjonction de maven dépendance à l'pom.xml fonctionne aussi bien, et ressemble à un plus standard fix.
Remarque: Le org.glassfish.jersey.les archétypes/maillot-guide de démarrage rapide-grizzly archétype maven ajoute la dépendance ci-dessus par défaut, mais en commentaire avec le commentaire "décommentez la ligne suivante pour obtenir la prise en charge de JSON".
J'ai eu le même problème lorsque vous essayez d'obtenir une réponse à partir d'un serveur Apache qui exécute PHP. Ma réponse était bonne à partir du serveur, mais le Printemps a été se plaindre à la MessageBodyWriter pas trouvé pour le type d'application/json. J'ai ajouté le Genson dépendance à mon pom.xml et il a fixé!
Documentation peut être trouvée à: https://code.google.com/p/genson/
essayer d'écrire le ObjectNode comme une Chaîne de caractères :