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

Spring@RequestBody使用Postman,但使用浏览器的javascript

荣俊杰
2023-03-14

我是一个刚开始的Web开发人员,主要是在Spring Boot上用java完成工作。刚刚开始熟悉javascript,现在遇到了一个问题,这个问题似乎与stackoverflow上的许多其他问题相似,但区别似乎是,使用Postman投递时一切正常,但通过javascript尝试使用浏览器时,我得到了415分。

当同一个尸体跟邮差一起投递时,得到的回应是:

{
    "id": 65,
    "name": "walk",
    "new": false
} 

jackson-databind、-core和-annotations版本2.10.1的依赖项正在使用中。

JavaCODE:

var url = contextRoot + "tasks"
var http = new XMLHttpRequest()

http.onreadystatechange = function() {

    alert("readystatechange")

    //if (this.readyState != 4) {
    //    return
    //}
       
    document.getElementById("received").innerHTML = this.responseText
    
}

function addTask() {
   
    var task = {
    name: document.getElementById("taskName").value
    }

    alert(JSON.stringify(task))

    http.open("POST", url)
    http.send(JSON.stringify(task))
}

我的@RestController

@RestController
public class TaskController {

    @Autowired
    private TaskRepository taskRepository;

    @GetMapping("/tasks")
    public List<Task> list() {
        return taskRepository.findAll();
    }

    @PostMapping(path = "/tasks", consumes = "application/json", produces = "application/json")
    public Task create(@RequestBody Task task) {
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println(task);
        return taskRepository.save(task);
    }
    
    /*@PostMapping("/tasks")
    public String create(@RequestBody String task) {
        System.out.println("!!!!!!!!!!!!!!!!!!!!");
        System.out.println(task);
        return "hilipataheijjaa";
    }*/
    
}

HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head lang="en">
        <meta charset="UTF-8" />
        <title>Tasks</title>
    </head>
    <body>

        <h2>Tasks</h2>
                
        <input type="text" id="taskName"/>
        <button onclick="addTask()">Add Task</button>

        
        <p id="received">
        </p>

        <script th:inline="javascript"> var contextRoot = /*[[@{/}]]*/ '';</script>
        <script th:src="@{/javascript/tasks.js}" defer></script>
        </body>
</html>

task.java

import javax.persistence.Entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.jpa.domain.AbstractPersistable;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Task extends AbstractPersistable<Long> {

    private String name;

}

共有1个答案

甄德寿
2023-03-14

错误是显而易见的。=>HttpMediaTypeNotSupportedException:内容类型“text/plain;charset=UTF-8”不受支持

//Send the proper header information along with the request
http.setRequestHeader('Content-type', 'application/json');

你可以加这个试试。

 类似资料:
  • 我想运行和控制一个浏览器窗口从一个web应用程序,以自动化的一些事情(如帐户创建等)在另一个网站。 所以我的问题是,有没有一种方法可以直接从浏览器使用selenium来实现它,在这种情况下如何实现它? 我知道有selenium-webdriver for JS,但在常见的用例中,我们将它与Node.JS一起使用。 WebDriver介绍建议这是可能的: 它的主要目的是允许web作者编写测试,使用户

  • Less 可以直接在浏览器端运行(支持IE6+、Webkit、Firefox),也可以借助Node.js或者Rhino在服务端运行。 Less是一种动态语言,无论是在浏览器端,还是在服务器端运行,最终还是需要编译成 CSS,才会发挥其作用。 浏览器端使用 在浏览器端直接使用Less,浏览器会直接为页面应用编译后的CSS样式,而不是生成单独的CSS文件。 在浏览器端直接使用Less,需要一个脚本的支

  • 问题内容: 这通常是由XML声明前的空白引起的,但是它可以是任何文本,例如破折号或任何字符。我说这通常是由空白引起的,因为人们认为空白始终是可忽略的,但事实并非如此。 经常发生的另一件事是UTF-8 BOM(字节顺序标记),如果将文档作为字符流传递给XML解析器而不是字节流,则在将XML声明视为空白之前允许我正在编写一个小型Java程序,以获取给定Google搜索字词的结果数量。出于某种原因,在J

  • ObjectBean类 所以我的问题是:我如何使用Spring mockMVC测试这个方法?

  • 以下是Chrome使用的头(从DevTools获得): 接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 接受编码:gzip、deflate、sdch 接受语言:en-us,en;q=0.8 授权:协商TLRMTVNTUAADAAAAAAAAAYAIOAAABKAWQBOGAAAAAWADABYA

  • 试图调用服务http://ip:8080/pqrs/lmn/xyz/runtest/scheduledautomation/1/xyz 下面是JSON字符串 必需的字符串参数“cron expresssion”不存在 如何在postman客户机上调用混合的和服务?