MessageBodyProviderNotFoundException:找不到媒体类型= text/html的MessageBodyReader; charset = UTF-8

ash*_*ram 6 java openfire jersey rest-client

我正在尝试使用openfire REST-API-Client.我正在调用使用以下代码将用户添加到openfire的方法.

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

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

UserEntity openFireUser = restApiClient.getUser(user.getUsername());
Run Code Online (Sandbox Code Playgroud)

当我调用api时,我得到以下异常.

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)
Run Code Online (Sandbox Code Playgroud)

我用Google搜索,看起来存在依赖关系的问题.但没有任何效果.

下面是我的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'
    }
Run Code Online (Sandbox Code Playgroud)

我也尝试将以下依赖项添加到我的build.gradle中,但它不起作用.

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'
Run Code Online (Sandbox Code Playgroud)

小智 3

media type text/html出现问题是因为to不匹配entity。您可以使用媒体类型的 Restful 服务media type text/html,但您需要使用media type Application/json. 并检查请求的 url 以及请求和响应的媒体类型。

也使用

@Produces("application/json")
@Consumes(MediaType.APPLICATION_JSON)
Run Code Online (Sandbox Code Playgroud)

并用正确的状态代码做出响应Mediatype