Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring控制器Post_Java_Spring_Post_Http Status Code 400 - Fatal编程技术网

Java Spring控制器Post

Java Spring控制器Post,java,spring,post,http-status-code-400,Java,Spring,Post,Http Status Code 400,我需要帮助创建对Java Spring Restcontroller的POST请求 这是我的控制器- @RestController @RequestMapping("hedgesimulator/") public class HedgeSimulatorController { @RequestMapping(value = "hedgesim/", method = RequestMethod.POST) @ResponseBody public HedgeSim

我需要帮助创建对Java Spring Restcontroller的POST请求

这是我的控制器-

@RestController
@RequestMapping("hedgesimulator/")
public class HedgeSimulatorController {

    @RequestMapping(value = "hedgesim/", method = RequestMethod.POST)
    @ResponseBody
    public HedgeSimulatorLog putHedgeSimulation(
        @RequestBody HedgeSimulatorLog hedgeSimulatorLog) {

        System.out.println(hedgeSimulatorLog.toJsonString());
        return hedgeSimulatorLog;
    }
}
我正在使用Chrome的“高级Rest客户端”插件将我的请求发布到我的URL(我确信我的本地主机运行正常,等等)

我需要在标题中添加什么?

我收到“HTTP 400-状态报告:客户端发送的请求在语法上不正确”的错误


请帮忙

若要将对象传递给控制器,您必须配置HttpMessageConverter,它支持此对象的序列化和反序列化。例如,如果要将对象作为JSON传递给控制器,请在spring配置文件中的mvc声明中将MappingJackson2HttpMessageConverter设置为参数

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>


如果http消息转换器配置正确,则可能是请求格式不正确。

@RequestMapping(value=“/hedgesim/”,method=RequestMethod.POST)

尝试以下方法,希望您可以解决此问题:

  • 由于您使用的是
    @RestController
    注释,因此无需再次使用
    @ResponseBody
    注释,这是多余的

  • 如果您使用的是spring boot,那么请确保添加了以下依赖项

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    
    org.springframework.boot
    SpringBootStarterWeb
    
  • 如果项目不是spring boot,则为jackson添加依赖项:
    com.fasterxml.jackson.databind.ObjectMapper

  • 为了确保请求主体是正确的,您可以做的是,首先执行请求方法,获取JSON响应,将相同的JSON传递给POST,这样可以避免在创建JSON数据时出现一些打字错误/人为错误


  • 希望有帮助。

    您可以进行以下检查

  • 验证您通过一些在线工具发送的请求正文,如
  • 检查映射Jackson2HttpMessageConverter是否已注册。默认情况下,如果类路径中有jar,Spring将注册此转换器
  • 如果使用的是
    @RestController
    ,则无需使用
    @ResponseBody
    。所以把它拿走

  • 有关使用Spring 4.0创建和使用REST服务的完整示例,您可以访问。

    您可能希望将Spring MVC日志记录级别设置为DEBUG,并检查服务器访问日志,以了解有关请求的更多信息。听起来这个请求是错误的——也可以尝试使用curl或其他命令行工具执行请求。最后,
    @ResponseBody
    @RestController
    中是多余的,我认为请求负载不能转换成HedgeSimulatorLogbean。您可以发布HedgeSimulatorLogbean和示例JSON负载吗?