RestEasy - Unable to find MessageBodyReader?

百般思念 提交于 2019-12-01 05:18:29

Do you have a json provider on your classpath? If you are using maven, try adding this dependency:

 <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jettison-provider</artifactId>
    <version>2.3.6.Final</version>
</dependency>

http://docs.jboss.org/resteasy/docs/2.3.6.Final/userguide/html_single/#JAXB_+_JSON_provider

EDIT:

Normally, one would use the content type application/json and not text/javascript. I'm not sure why you are using text/javascript?

Anyways, if your endpoint returns only text/javascript, you can always modify the Content-Type-header in an interceptor:

ResteasyProviderFactory factory = new ResteasyProviderFactory();
RegisterBuiltin.register(factory);
factory.getClientExecutionInterceptorRegistry().register(
    new ClientExecutionInterceptor() {
        @Override
        public ClientResponse execute(ClientExecutionContext ctx) throws Exception {
            ClientResponse response = ctx.proceed();
            if("text/javascript".equals(response.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE))){
                response.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
            }
            return response;
        }
    });


ProxyFactory.create(Service.class, URI.create("http://url-to-your-sevice"), new ApacheHttpClient4Executor(), factory);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!