web-dev-qa-db-fra.com

MessageBodyProviderNotFoundException: MessageBodyReader introuvable pour le type de support = text/html; charset = UTF-8

J'essaie d'utiliser Openfire REST-API-Client. J'appelle une méthode pour ajouter un utilisateur à l'openfire en utilisant le code suivant.

AuthenticationToken authenticationToken = new AuthenticationToken("username","password");

RestApiClient restApiClient = new RestApiClient("url",port, authenticationToken);

UserEntity openFireUser = restApiClient.getUser(user.getUsername());

Lorsque j'appelle l'api, je reçois l'exception suivante. 

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/html;charset=UTF-8, type=class org.igniterealtime.restclient.entity.UserEntity, genericType=class org.igniterealtime.restclient.entity.UserEntity.
    at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.Java:231)
    at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.Java:155)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.Java:1085)
    at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.Java:874)
    at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.Java:808)
    at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.Java:326)
    at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.Java:115)

J'ai googlé et il semble y avoir un problème avec les dépendances. Mais rien n'a fonctionné. 

Ci-dessous mon build.gradle 

compile(group: 'org.igniterealtime', name :'rest-api-client', version: igniterealtime_rest_api_version){
        exclude group: 'org.slf4j', module: 'slf4j-simple'
        exclude group: 'org.slf4j', module: 'slf4j-api'
    }

J'ai aussi essayé d'ajouter des dépendances suivantes à mon build.gradle, mais cela n'a pas fonctionné.

compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.23'
compile group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: '2.2'
compile group: 'org.glassfish.jersey.media', name: 'jersey-media-moxy', version: '2.24'
compile group: 'com.fasterxml.jackson.jaxrs', name: 'jackson-jaxrs-json-provider', version: '2.4.1'
5
ashishjmeshram

problème est dû au non-concordance de media typetext/html à entity. vous pouvez utiliser un service reposant avec le type de média media type text/html mais vous devez utiliser media type Application/json. et vérifiez également l'URL demandée et le type de média de demande et de réponse.

utiliser aussi 

@Produces("application/json")
@Consumes(MediaType.APPLICATION_JSON)

et répondez avec le code de statut approprié et Mediatype

1
Anshul Sharma