当前位置: 首页 > 知识库问答 >
问题:

@PostMapping不工作。HTTP 415不受支持的MediaType错误

庾奇思
2023-03-14

我创建了一个@RestController并映射了一个@PostMapping请求。

@PostMapping("/saveUser")
public UserDetails save(@RequestBody UserDetails user) {
    System.out.println("from json input : "+user.idVal+" : "+user.getName());
    service.save(user);
    JSONObject jsn = new JSONObject();
    jsn.put("Result", user.getName());
    return user;
}

HTTP请求

{
"idVal":"asdadasd",
"name":"TestUser"
}

模型类

import javax.persistence.Entity;
javax.persistence.Id;

@Entity
public class UserDetails {

    @Id
    public String idVal;
    public String name;

    public String getId() {
        return idVal;
    }
    public void setId(String id) {
        this.idVal = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

我正在使用邮差作为其余的客户。

HTTP Status 415 – Unsupported Media Type
Type Status Report

Description The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.

Apache Tomcat/8.5.31
@PostMapping(value="/saveUser", consumes=MediaType.APPLICATION_JSON_VALUE, produces=MediaType.APPLICATION_JSON_VALUE)
public UserDetails save(@RequestBody UserDetails user) {
    System.out.println("from json input : "+user.idVal+" : "+user.getName());
    service.save(user);
    JSONObject jsn = new JSONObject();
    jsn.put("Result", user.getName());
    return user;
}
 POST /Zcrud/saveUser HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: fa4cfc76-d60c-f8dd-53b9-fd8b0b27ef7d

{
    "idVal":"asdadasd",
    "name":"TestUser"
}

答复:

<!doctype html><html lang="en"><head><title>HTTP Status 415 – Unsupported Media Type</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 415 – Unsupported Media Type</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.</p><hr class="line" /><h3>Apache Tomcat/8.5.31</h3></body></html>

共有1个答案

东门晨
2023-03-14

您正在将请求中的application/json从Postman传递给您的应用程序。但是您的服务器不理解application/json是什么。

所以,你也必须在你的服务器中定义什么类型的请求将被处理,以及它将产生什么类型的响应。

为此,请如下所示更改@RestController@PostMapping

@PostMapping(value ="/saveUser", consumes = MediaType.APPLICATION_JSON_VALUE,
        produces = MediaType.APPLICATION_JSON_VALUE)
public UserDetails save(@RequestBody UserDetails user) {
   System.out.println("from json input : "+user.idVal+" : "+user.getName());
   service.save(user);
   JSONObject jsn = new JSONObject();
   jsn.put("Result", user.getName());
   return user;
}

希望有帮助!!:)

 类似资料:
  • 我想上传带有spring-boot和vue的文件。但是,我有一个错误“415:Unsupported MediaType”。 这是我的Spring启动控制器。 而且,这是我的vue代码。 我尝试,但遇到同样的错误。我该如何修复它?

  • 为了解决这个问题,我还添加了一个MultipartResolver 很可能是一些愚蠢的东西,但我找不到我错过的东西。

  • 我有一个REST API,它只@product(mediatype.application_json),而不@消费任何媒体类型。 即使当我通过创建一个HTTP请求来使用这个REST API,其中MediaType被设置为multipart/form-data时,我仍然在重复: HTTP/1.1 415不支持的媒体类型 “现在,我为什么要将内容类型作为多部分/表单数据发送?” 这是因为我正在使用该服

  • 我不知道它为什么要用JDK10来做任何事情,但我还是得到了这个信息。 我很乐意使用JDK10,但是我的项目在那个版本中不能工作,所以我要回去看看它在哪些版本中工作。我已经为版本1.4到版本10安装了SDK。 我也尝试过使用JDK1.8进行构建,但得到的错误消息略有不同: 有人能告诉我如何使用JDK1.9或1.8构建我的项目吗?

  • 尝试学习Spring-Boot,并提高我的Java技能。我一直收到错误声明“..java:error:release version 14不受支持..”。我的jdk在preferences页面上设置为jdk-11。我找不到jdk版本设置为14的地方。你知道去哪找吗?我正在使用IntelliJ IDEA Ultimate和最新版本的Kite和Spring-Boot。这里是我的扫描器脚本,用于探索扫描

  • 问题内容: 我正在执行一个简单的preparestatement查询执行,并抛出此错误:java.sql.SQLException:net.sourceforge.jtds.jdbc.JtdsPreparedStatement.notSupported的这种类型的语句不支持使用executeQuery(string)方法(net.sourceforge.jtds.jdbc.JtdsPrepared