这是使用Spring编写的rest客户端:
public void addGadget(String gadgetName, String gadgetUrl) {
Map<String, String> map = new HashMap<String, String>();
map.put("gadgetName", gadgetName);
map.put("gadgetUrl", gadgetUrl);
restTemplate.postForLocation(restServiceUrl, map);
}
这不是我的代码,我无法改变它。我应该写休息服务,但没有春天,使用运动衫。这是我的代码,但它不起作用:
@Path("gadgets")
public class RestService {
@POST
@Consumes("application/x-www-form-urlencoded")
public Response addGadget(@FormParam("gadgetUrl") String gadgetUrl,
@FormParam("gadgetName") String gadgetName) throws Exception {
//some logic
return Response.status(201).build();
}
}
当我尝试使用spring客户端访问此服务时,我得到例外:
org.springframework.web.client.HttpClientErrorException:415 不支持的媒体类型
我应该如何重新编写我的服务声明(我猜问题是使用Consumes注释),以便弹簧客户端可以访问弹簧代码。
答案 0 :(得分:0)
键入时:
@Consumes("application/x-www-form-urlencoded")
您缩小了服务可接受的类型。请尽量不要这样做,只需删除这行代码,看看会发生什么。如果它没有帮助,则意味着RestTemplate被设置为使用某种未知的媒体类型。如果是这样,请检查Spring RestTemplate对象发送的媒体类型是什么。如果删除@Consumes将无法帮助编写从RestTemplate发送的媒体类型,以便我可以提供更多帮助。