Java Application/JSON是restful Web服务中不受支持的媒体类型
我正在尝试创建一个restful jersey Web服务。我必须将JSON对象传递给Web服务Java Application/JSON是restful Web服务中不受支持的媒体类型,java,json,rest,jersey,Java,Json,Rest,Jersey,我正在尝试创建一个restful jersey Web服务。我必须将JSON对象传递给Web服务 @POST @Path("/saveVehicleTrackingData") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String saveVehicleTrackingData(VehicleTracking vehicle
@POST
@Path("/saveVehicleTrackingData")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String saveVehicleTrackingData(VehicleTracking vehicleTracking) {
return vehicleTracking.toString();
}
当我尝试向该服务发出请求时,它会显示HTTP状态415-不支持的媒体类型。请帮助。另外,方法saveVehicleTrackingData的单参数类型应该是什么
PS:我正在使用邮递员发出http请求
更新:
正如peeskillet所指出的,这里缺少的是JSON提供者。我面临的下一个挑战是,如何在我的项目中集成JSON提供程序。经过一点研究,我发现FasterXML jackson是JSON提供者之一。第一个问题: 您使用的是哪种主机(Tomcat、GlassFish或其他……),主机的Java版本是什么?我从经验中知道,不同版本的Tomcat与Jersey的结合有时会导致
@Consumes(MediaType.APPLICATION\u JSON)
出现问题
关于第二个问题:
如果要构建RESTful Web服务,路径的正确名称应该是;车辆跟踪数据(或您喜欢的任何内容)。此路径将与已知的HTTP谓词一起工作(请求/响应);获取、发布、放置或删除。
这张图片仅供参考。我刚从另一个帖子上看到
基本上,当您使用raw时,它将默认为
text/plain
。下拉列表中的JSON只是选择语法高亮显示。您仍然需要将内容类型
标题设置为application/json
。您可以单击标题按钮并添加它。您是如何提出请求的?您是否将内容类型指定为application/json?同意,很可能您没有将请求作为json内容类型发送。作为旁注,GET/DELETE不应传递给请求正文。遗憾的是,设置标头不起作用(尽管可能有必要)。问题不在于邮递员请求(正如我对文本/普通媒体类型进行的类似实验),而在于传递给方法saveVehicleTrackingData的单一agrument类型。正确的类型应该是什么?张贴整个stacktrace。类型应该是loggedAs,它可以是读取器提供程序可以解析为的任何类型。你有JSON提供程序吗?如果方法参数仍然是对象类型,那么使用text/plain
进行测试毫无意义text/plain
是一个简单的字符串。读者如何知道如何将字符串转换为POJO?您需要确保有一个JSON提供程序作为依赖项并进行了配置。JSON提供程序对我来说是一个新事物。希望这会有所帮助。我正在尝试使用FasterXMLJackson json提供程序。我在POM中添加了所需的maven依赖项(com.fasterxml.jackson.jaxrs,jacksonjaxrsjson提供程序)。您能否进一步帮助我如何配置我的项目,以便在向Web服务发出请求时,JSON数据可以自动转换为POJO。