
[英]JAX-RS service always replies with 415 Unsupported Media Type error to POST requests
[英]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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.