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

标签 java angularjs spring jersey

我有 Jersey 申请,但无法成功提交表单。我收到 415 不支持的媒体类型错误。

AngularJs:

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

Java:

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

}

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

我有什么地方出错了吗?

最佳答案

如果不进行一些调整,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,因为这是默认行为。您可能想查看this post ,如果您想使用 JSON。

关于java - Jersey 应用程序 - 415 不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37314966/

相关文章:

java - Spring security oauth2 修改响应主体连接

java - Spring Data Neo4j APOC 未执行但没有错误

javascript - Slickgrid - 调整列大小触发 onHeaderClick 事件

html - 隐藏和显示列的 th 和 td 宽度变化

java - 将外部化值注入(inject) Spring 注解

java - 在 Spring data JPA 中将字符串转换为 CLOB

java - JTree 选择而不生成事件

java - Java 中的标签云库

ruby-on-rails - AngularJS 如何转换 Rails API 的请求

java - 为什么在 JpaTransactionManager 中使用 jpadialect