@Produce注解,MessageBodyWriter not found for media type=text/plain, type=class java.util.ArrayList

        接手同事开发完的代码,帮忙联调功能。在调用内部接口的时候却返回报错了:

MessageBodyWriter not found for media type=text/plain, type=class java.util.ArrayList, genericType=java.util.List<java.lang.String>

        但是该内部接口调用的外部接口返回却是正常的。遂判断问题肯定出在内部代码里了。一开始没注意到接口类注解上面,认为是外部接口返回来的数据在处理时,转实体对象有问题,但是调试几次都不成功。然后仔细看看报错信息,发现是在向框架返回数据时,类型不正确。随后加上@Produces(MediaType.APPLICATION_JSON)注解,成功解决问题。

        随即了解了下Jersey框架中数据类型的知识:

        在 Java 中,当使用 JAX-RS 架构来开发 RESTful Web 服务时,需要使用 MessageBodyWriter 将 Java 对象序列化为某种媒体类型(如 JSON、XML 或纯文本)。对于每种媒体类型和 Java 类型组合,都需要一个对应的 MessageBodyWriter。个人理解就是在调用接口时,接口返回的数据,调用方需要保持和接口返回的一致才可以。

        而@Produces注解:指定http响应的MIME类型,默认是*/*,表示任意的MIME类型。该注解的值是数组类型,支持多个MIME类型,可以使用MediaType来指定MIME类型。

常用类型:

application/xml
application/json
application/x-www-form-urlencoded
multipart/form-data
application/octet-stream
text/plain
text/xml
text/html

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值