为Spring RestTemplate POST获得400

时间:2018-06-05 18:49:29

标签: java spring spring-boot resttemplate

我在spring boot app中使用resttempalate进行POST调用时遇到400错误。

这是我的代码:

     HttpHeaders headers = new HttpHeaders();
     headers.setContentType(MediaType.APPLICATION_JSON);
     headers.add("Accept", "application/json");
     request = "{ json : string }";
     url = "http://localhost:9082/restws";
     HttpEntity<String> entity = new HttpEntity<String>(request , headers);
     return restTemplate.postForObject(url, entity, String.class);

堆栈追踪:

org.springframework.web.client.HttpClientErrorException:400     在org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:63)     在org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:700)     在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:653)     在org.springframework.web.client.RestTemplate.execute(RestTemplate.java:613)     在org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:380)     在com.envision.application.web.rest.EngineResource.getModelParams(EngineResource.java:109)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)

2018-06-05 14:26:58.064 ERROR 42744 --- [XNIO-13 task-38] c.e.a.w.rest.errors.ExceptionTranslator:发生意外错误:400 2018-06-05 14:26:58.069 WARN 42744 --- [XNIO-13 task-38] .m.m.a.ExceptionHandlerExceptionResolver:由Handler执行引起的已解决异常:org.springframework.web.client.HttpClientErrorException:400

3 个答案:

答案 0 :(得分:0)

它不是一个有效的json。用双引号括起键和值。

答案 1 :(得分:0)

您正在形成一个错误的请求,尝试更改请求正文。

String request = " {  \"json\" : \"string\" }" ;

答案 2 :(得分:0)

现在有效。静止端点的JSON解析器需要围绕字段名称的双引号。谢谢大家帮忙。