有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

下面是使用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);
}

这不是我的代码,我无法更改。我应该写rest服务,但没有spring,使用jersey。以下是我的代码,但它不起作用:

@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 Unsupported Media Type

我应该如何重新编写我的服务声明(我想问题在于Consumes注释),以使spring客户端可以使用未更改的spring代码访问它


共 (1) 个答案

  1. # 1 楼答案

    键入时:

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

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