POST 使用 Jax-RS 给出 HTTP 错误代码 415?

POST with Jax-RS giving HTTP error code 415?

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

    @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.html

If a resource is unable to consume the MIME type of a client request, the JAX-RS runtime sends back an HTTP 415 (“Unsupported Media Type”) error.

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

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

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

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

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

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

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

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

点击您感兴趣的电话,然后查看headers。 如果您缺少某些内容类型,您可以在您的服务中为其添加注释。

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

然后在 F12 window(在我的例子中是 firefox):