【问题标题】:Using Jersey's @BeanParam results in a 415 error使用 Jersey 的 @BeanParam 会导致 415 错误
【发布时间】:2016-11-02 09:58:48
【问题描述】:

我正在尝试通过以下方式使用 Jersey 的 @BeanParam 注释:

这是我的豆子:

public class BeanParamModel {

@QueryParam(value = "param1")
private String param1;

public BeanParamModel(@QueryParam("param1") String param1) {
    this.param1 = param1;
}

public String getParam1() {
    return param1;
}

public void setParam1(String param1) {
    this.param1 = param1;
}}

这是需要使用它的资源方法:

@Consumes("*/*")
@Path("mypath")
@GET
public Response getUpgradeStatus(@QueryParam("param1") String param1, @BeanParam BeanParamModel user) {
    return Response.ok().build();
}

现在我想使用一个单元测试来测试它,它使用以下 url 向测试服务器发送一个 http 请求:

获取http://path_to_resource?param1=1

我的问题是导致 Jersey 打印此消息的 415 响应:

找不到 Java 类 BeanParamModel、Java 类型类 BeanParamModel 和 MIME 媒体类型 application/octet-stream 的消息正文阅读器。 与 MIME 媒体类型兼容的注册消息正文阅读器有:...

我尝试添加“application/x-www-form-urlencoded”标头,但该标头类型的消息也会重复。我还尝试使用 application/json 标头,由于输入结束,这会导致 jackson 映射器预期 EOF。

谁能告诉我我做错了什么?从@BeanParam 的球衣文档看来,这似乎很简单。

【问题讨论】:

  • 你为什么要消费*/*?。您了解这对您的应用程序的影响吗?
  • 上面的代码是资源的简化版本,用于演示我遇到的问题,而不是实际的应用程序。关于消费注释:我尝试使用符合我发送的标头但没有效果的应用程序类型,仍然得到相同的错误。

标签: jersey http-status-code-415


【解决方案1】:

使用@GET 你不应该有@Consumes。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多