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

无法使用POST请求发送JSON

唐焕
2023-03-14

这是我的控制器:

@RequestMapping(value = "", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> create(
        @RequestBody Category category) {

    if (categoryService.create(category)) {
        return new ResponseEntity<String>(HttpStatus.OK);
    } else {
        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
    }
}

这是我的配置:

    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

    <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <beans:property name="messageConverters">
        <beans:list>
            <beans:bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </beans:list>
    </beans:property>
</beans:bean>

<context:component-scan base-package="ru.tenet.cafe" />

这是类别类:

private Integer id;

private String title;

private String engTitle;

private String description; 

private List<MenuItem> menuItems;   

public Category()
{

}
public Category(Integer id, String title, String engTitle,
        String description, List<MenuItem> menuItems) {
    super();
    this.id = id;
    this.title = title;
    this.engTitle = engTitle;
    this.description = description;
    this.menuItems = menuItems;
}

// getters and setters

如果我尝试发送内容类型为application/json和以下正文的post请求:

{“id”:8,“title”:“Паа”、“engTitle”:“Pizza”、“description”:null,“menuItems”:[{“id”:4,“title”:“Паааааааааааа”和“engTitle”:“Pepperoni”、“price”:300.0”,description:“Саааааааа,“一致性”:“E666,Сааааааааааааааааааа”,ааааа值:500.0,“VolumeTile title”:“Γ”},{“id”:5,“title”:“Мааааааа,“一致性”:“Паа、Саа、ааа、аа、аа、аа、аа、ааа、аа、а、а、а、а、а、а、а、а、а、,“一致性”:“体积值”:500.0,“体积值”:“Γ”}

我会得到:

HTTP状态415。服务器拒绝了此请求,因为请求实体的格式不受请求方法的请求资源的支持。

什么是错的?

UPD:添加这个@RequestMapping(value=”“,method=RequestMethod.POST,consumes=MediaType.APPLICATION\u JSON\u value,products=“APPLICATION/JSON”)会给我同样的结果

共有1个答案

伏欣悦
2023-03-14

我也有同样的问题

我删除了@RequestBody,而使用了字符串。在您的情况下,它将是@Requestparam字符串类别

现在类别将是JSON格式的字符串。现在使用json去序列化器并反序列化json

注意:我承认这不是你当前问题的解决方案,但这是另一种解决方案

 类似资料:
  • 我正试图根据以下代码发出post请求: 在Postman,此请求工作正常,不需要身份验证,无需登录名、密码或令牌即可工作。但是,上面的代码不起作用。 日志控制台的一部分如下: 我无法粘贴整个stacktrace,因为stackoverflow平台不允许。

  • 请求方式: "|3|2|url,content|\r" 参数: url 设置Post请求的url链接 content post请求的数据 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: sof

  • 我正在使用截击与API交互。我需要向返回JSON数组的服务发送post请求(带参数)。 JsonObjectRequest有一个构造函数,它接受一个方法和一组参数 但是JSONArrayRequest(我需要的一个)只有一个构造函数的形式 我如何才能使其发送包含数据的POST请求?

  • 我正在尝试根据下面的代码提出帖子请求: 此请求不需要身份验证,也不需要登录和密码。在邮递员那里,我可以成功地提出请求,但当我尝试执行上述代码时,我得到了: 401未经授权 我在邮递员那里模拟了错误,它给了我下面的信息: 当我在Postman中将身份验证方法更改为“No Auth”时,请求运行良好。 我想我必须在代码中设置这个选项“No Auth”,但我不知道如何设置。 我这样做: 但错误仍在继续。

  • 问题内容: 我不想使用文件,但是只有django才需要发出POST请求。 就像发送请求一样。 问题答案: 结合使用urllib2和urllib中的方法即可解决问题。这是我使用这两种方法发布数据的方式: 是用于打开URL的方法。 将参数转换为百分比编码的字符串。

  • zendserver 2019.7 php 7.3 apache 2.4 在测试环境中,我通过curl向我的本地服务器发送JSON post请求。当CURLOPT_POSTFIELDS少于1000个字符时,它的脚本被执行,我得到的响应很好。 但是当我增加JSON数组的长度时,同样的脚本会出现404错误。 我已经改变了所有的配置,如post_max_size等,但没有任何效果。 }'; $ URL