2017-08-04 110 views
1

我正在嘗試使用openfire REST-API-客戶端。我正在調用方法使用以下代碼將用戶添加到openfire。MessageBodyProviderNotFoundException:未找到媒體類型爲text/html的MessageBodyReader; charset = UTF-8

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

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

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

當我調用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) 

我googled,它看起來有一些與依賴關係的問題。但沒有任何工作。

下面是我的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' 
    } 

我也嘗試添加以下的依賴我的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' 
+1

你連接到正確的網址是什麼?在錯誤消息中,它表示您收到的響應具有媒體類型「text/html」,顯然,它不能被解析爲用戶實體。這很可能是由於未收到成功響應(200 OK)或由於連接到錯誤的URL所致。 –

+0

做一些調試。檢查狀態碼和正文。在客戶端反序列化之前檢查狀態碼始終是一個好主意,因此您可以在錯誤狀態下執行其他操作 –

+0

遇到問題。其實我必須在openfire中安裝REST API插件。 – ashishjmeshram

回答

0

問題發生,因爲不匹配的media typetext/htmlentity。您可以使用media type text/html媒體類型的寧靜服務,但您需要使用media type Application/json。並檢查請求的URL和媒體類型的請求和響應。

也使用

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

,並響應與適當的狀態代碼和Mediatype

相關問題