HTML   发布时间:2022-04-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用JAX-RS标准客户端API从Web服务处理错误的JSON内容类型?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用烂番茄API搜索电影.

我有一个使用TMDB而不是烂番茄的等效的完全工作的应用程序.

我使用JBoss RESTEasy提供的标准JAX-RS客户端和RESTEasy Jackson2提供程序(我当然不能发布我的API密钥):

public MovieSearchResults search(String query) {
    return client
        .target("http://api.rottentomatoes.com/api/public/v1.0/movies.json")
        .queryParam("apikey",API_KEY)
        .queryParam("q",query)
        .request(MediaType.APPLICATION_JSON)
        .get(MovieSearchResults.class);
}

MovieSearchResults类只是一个用于绑定JSON的JAXB注释类.

直接的问题是Rotten Tomatoes API正在为其所有JSON响应返回内容类型为“text / javascript”的响应.他们表现出不愿意改变他们的服务,即使这显然是在返回JSON时设置的错误内容类型,所以现在它就是它的本质.

我调用服务时遇到的异常是:

Exception in thread "main"
javax.ws.rs.client.ResponseProcessingException: 
javax.ws.rs.ProcessingException: 
Unable to find a MessageBodyReader of 
content-type text/javascript;charset=ISO-8859-1 and type class MovieSearchResults

所以问题是:是否有一种简单的方法来获取/配置标准JAX-RS客户端以将返回的“text / javascript”内容类型识别为“application / json”?

These questions是类似的,但接受的答案似乎使用JBoss特定的API,我只想通过JAX-RS客户端API来完成.

解决方法

答案是使用JAX-RS ClientResponseFilter.

请求已更改为注册过滤器:

public MovieSearchResults search(String query) {
    return client
        .register(JsonContentTypeResponseFilter.class)
        .target("http://api.rottentomatoes.com/api/public/v1.0/movies.json")
        .queryParam("apikey",query)
        .request(MediaType.APPLICATION_JSON)
        .get(MovieSearchResults.class);
}

过滤器本身只是替换内容类型标头:

public class JsonContentTypeResponseFilter implements ClientResponseFilter {

    @Override
    public void filter(ClientRequestContext requestContext,ClientResponseContext responseContext) throws IOException {
        List<String> contentType = new ArrayList<>(1);
        contentType.add(MediaType.APPLICATION_JSON);
        responseContext.getHeaders().put("Content-Type",contentType);
    }
}

大佬总结

以上是大佬教程为你收集整理的如何使用JAX-RS标准客户端API从Web服务处理错误的JSON内容类型?全部内容,希望文章能够帮你解决如何使用JAX-RS标准客户端API从Web服务处理错误的JSON内容类型?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: