如何编写Jersey休息服务可以通过给定的spring代码访问

时间:2011-09-06 10:15:01

标签: java spring rest jersey

这是使用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注释),以便弹簧客户端可以访问弹簧代码。

1 个答案:

答案 0 :(得分:0)

键入时:

@Consumes("application/x-www-form-urlencoded")

您缩小了服务可接受的类型。请尽量不要这样做,只需删除这行代码,看看会发生什么。如果它没有帮助,则意味着RestTemplate被设置为使用某种未知的媒体类型。如果是这样,请检查Spring RestTemplate对象发送的媒体类型是什么。如果删除@Consumes将无法帮助编写从RestTemplate发送的媒体类型,以便我可以提供更多帮助。