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

无法在Spring MVC控制器中发送POST请求的json响应

佴淮晨
2023-03-14

我可以在POST请求时发送对象列表作为响应,并在VueJs客户端中接收它

@RequestMapping(value={"/data/parts"}, method = RequestMethod.POST)
@ResponseBody public List<Part> getPartsList( @RequestBody LookupForm lookupForm ) {
        return getService().findParts(lookupForm.getCode(), lookupForm.getName(), lookupForm.getWarehouseCode());
}

但是当我尝试用自定义类响应时(我甚至在请求映射注释中添加了生产="应用/json"

@RequestMapping(value={"/addPartsRequest"}, method = {RequestMethod.POST}, produces="application/json")
    @ResponseBody public Response addPartsRequest(@RequestBody PartsRequest partsRequest) {
        Response response = new Response("Fail","Your Request failed");
        PartsRequest newRequest = getService().addPartsRequest(partsRequest);
        if (newRequest != null){
            response = new Response("Ok", "The Ticket has been submitted.");
        }
        return response;
}

class Response {
    String message;
    String status;

    public Response() {
        // empty c-tor for serialization
    }

    public Response(String status, String message) {
        this.message = message;
        this.status = status;
    }
    // ... getters & setters omitted
    }

在axios的帮助下发送VueJs端请求。邮递

var headers = {
            'Content-Type': 'application/json'
      }
      axios.post(`${API_URL.orderApi}`, formData, {headers})
        .then(response => {
          const commitPayload = response.data.message;
          const status        = response.data.status;
          if(status === 'Ok'){
              this.$store.commit('setMessage', commitPayload)
          }else{
              this.$store.commit('setErrMessage', commitPayload)
          }
          this.$router.push('/parts')
        },
        error => {
          this.$store.commit('setErrMessage', 'Submit Order failed')
          this.$router.push('/parts')
        })

Vue用户界面客户端接收

Status Code: 406 Not Acceptable
Content-Type: text/html;charset=UTF-8
<html><head><title>Error</title></head><body>Not Acceptable</body></html>

为什么我可以用对象列表响应而不能用POJO响应,以及如何解决这个问题?非常感谢。

PS.项目依赖于jackson-数据库v2.8.2和Spring v4.3.1

共有2个答案

能文华
2023-03-14

事实证明,我是在向映射到后缀为“htm”的url的控制器发送带有json主体的POST请求。此请求导致与mime映射“text/html”冲突,结果服务器立即响应代码406。

贲铭
2023-03-14

我从邮递员那里得到正确的回复。我相信你们有能手和二传手。

使用头Accept:application/json

将该类标记为可序列化。

 类似资料:
  • 这是我的控制器: 这是我的配置: 这是类别类: 如果我尝试发送内容类型为application/json和以下正文的post请求: {“id”:8,“title”:“Паа”、“engTitle”:“Pizza”、“description”:null,“menuItems”:[{“id”:4,“title”:“Паааааааааааа”和“engTitle”:“Pepperoni”、“price

  • 我得到以下错误 响应数据为空。我做错了什么,或者我在代码中遗漏了什么?

  • 问题内容: 我正在编辑内置的表单。 我在对话框中显示该表单,然后提交。 数据已正确输入数据库。 但是我不知道是否需要将一些寄回。其实我对事情有点困惑。 假设我在表中使用``jQuery添加了一行,当我提交表单时,然后在提交数据之后,我想发回那些行数据,以便我可以动态添加表行以显示添加的数据。 我很困惑如何获取这些数据。 这是我当前的代码: 这只是带有成功消息的模板。 问题答案: Symfony 2

  • 我试图在ajax调用中发布json请求,但我没有收到来自请求的任何成功响应。 请找到我下面的代码:我在这里做错了什么: 它击中了网址,我得到200确定状态,但它总是出错条件... 有人能帮忙吗,我需要改变什么工作: 我尝试了data:JSON. stringify({key:"value", key1:"value e1"})-但这也没有帮助

  • 问题内容: 我正在使用Retrofit集成我的Web服务,但我不明白如何使用POST请求将JSON对象发送到服务器。我目前陷入困境,这是我的代码: 活动:- PostInterface:- 要求JSON:- 响应JSON:- 问题答案: 在gradle中使用这些 使用这两个POJO类........ LoginData.class LoginResult.class 像这样使用API 使用这样的呼

  • ----在2019-06-03@13:21 CET下面添加信息----因为我有一个普通的Spring(非引导)应用程序接受来自打印机的POST请求,所以我能够在传入的请求中记录信息。所以我就这么做了。 这是来自打印机的POST请求之一,Spring boot Oontroller不接受它: 这是Postman向完全相同的URL发送的POST请求之一,Spring boot Oontroller接受