Jersey应用程序 - 415不支持的媒体类型

时间:2016-05-19 05:58:53

标签: java angularjs spring jersey

我有球衣应用程序,我无法让表单提交成功。我得到415不支持的媒体类型错误。

AngularJs:

$http.put(url, frmData, {
      transformRequest: angular.identity,
      headers: {'Content-Type': 'application/x-www-form-urlencoded'},
      data: frmData
    });

爪哇:

@PUT
@Path("/submitform")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void saveForm(@Context HttpServletRequest request,
                     PojoClass pojoClass) {

}

我得到415不支持的媒体类型错误。

我有什么地方出错吗?

2 个答案:

答案 0 :(得分:2)

如果没有一些tweeking,Jersey不知道如何将application/x-www-form-urlencoded数据转换为POJO。以下是它所知道的

public Response post(javax.ws.rs.core.Form form)

public Response post(MultivaluedMap<String, String> form)

public Response post(@FormParam("key1") key1, @FormParam("key2") String key)

如果您想使用POJO,可以使用@BeanParam注释POJO参数,并使用@FormParam

注释POJO字段
public class POJO {
    @FormParam("key1")
    private String key1;
    @FormParam("key2")
    private String key2;
    // getters/setters
}

public Response pose(@BeanParam POJO pojo)

如果您使用的是Angular,那么您也可以使用JSON,因为这是默认行为。如果您想使用JSON,可能需要查看this post

答案 1 :(得分:0)

  1. 添加 saveFormMethod中的@Consumes(MediaType.APPLICATION_JSON)

  2. 不是直接将pojoClass映射为输入参数,而是将输入参数更改为string,然后使用gson库将字符串转换回实际的POJO对象。