繁体   English   中英

使用 Jax-RS 发布 HTTP 错误代码 415?

[英]POST with Jax-RS giving HTTP error code 415?

我有以下使用jax-rs框架的POST端点:

    @POST
    @NoCache
    @Path("/{client}/email/template/type/{type}")
    public void sendEmail(
    @PathParam("client") String client,
    @PathParam("type") String communicationTemplateType) {
        emailService.sendEmail(client, communicationTemplateType);
    }

每当我到达此端点时,我都会收到以下错误,错误代码为415

JBWEB000135: The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.

我的端点有什么问题?

正如https://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp22/index.ZFC35FDC70D5FC69D2698Z83A8内报道的那样

如果资源无法使用客户端请求的 MIME 类型,则 JAX-RS 运行时会发回 HTTP 415(“不支持的媒体类型”)错误。

您是否尝试添加 @Consumes 符号来指定接受的媒体类型?

您传递了 URL 中的所有参数。 尝试切换到 GET 而不是 POST。

虽然带有空主体的 POST 端点并不少见,但以下响应让我有些停顿:

JBWEB000135:服务器拒绝此请求,因为请求实体的格式不受所请求方法的请求资源支持。

您能否验证客户端并确保它没有在其请求正文中发送任何数据。 还要验证您的客户端是否发送了任何 Content-Type Header。

如果您不确定客户端是否在静默添加任何正文/标题,您可以使用 Postman 来模拟这一点。 或者一个简单的 curl 就足够了。

调试连接请求并检查 MIME 类型标头。 如果您的客户端发布请求并声明您不支持的 MIME 类型,那么您需要更改请求或调整您的服务器 REST 服务以支持该 MIME 类型。

例如,如果您使用浏览器作为客户端执行 REST POST 调用,您可以在运行 POST 调用之前单击 F12(firefox/chrome),然后执行操作,您将看到所有 REST 调用已执行。

单击您感兴趣的呼叫,然后检查标题。 如果您缺少某些内容类型,您可以在您的服务上为其添加注释。

例如:我先打开 F12 然后我用这个站点运行一个 POST 调用: https://reqbin.com/

然后在 F12 window (在我的例子中是Firefox): 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM