我正在编写一个Rest客户端,使用Spring RestTemplate发布JSON数据。 在正文中使用POSTMAN和跟随JSON数据正确获取响应 -
{
"InCode":"test",
"Name":"This is test",
"Email":"test@gmail.com",
"Id":18,
}
但是当尝试使用Spring RestTemplate按如下方式命中REST API时
ResponseEntity<String> response = restTemplate.exchange(baseUrl,
HttpMethod.POST, getHeaders(), String.class);
private HttpEntity<?> getHeaders() throws JSONException {
JSONObject request = new JSONObject();
request.put("Email", "test@gmail.com");
request.put("Id", "18");
request.put("Name", "This is test");
request.put("InCode", "test");
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
return new HttpEntity<>(request.toString(), headers);
}
我得到例外 -
11:52:56.808 [main] DEBUG o.s.web.client.RestTemplate - Created POST request for "http://server-test/platform/v4/org"
11:52:56.815 [main] DEBUG o.s.web.client.RestTemplate - Setting request Accept header to [text/plain, application/json, application/*+json, */*]
12:03:47.357 [main] DEBUG o.s.web.client.RestTemplate - Writing [{"InCode":"test","Email":"test@gmail.com","Id":"18","Name":"This is test"}] using [org.springframework.http.converter.StringHttpMessageConverter@6a1aab78]
11:52:57.574 [main] DEBUG o.s.web.client.RestTemplate - POST request for "http://server-test/platform/v4/org" resulted in 500 (Internal Server Error); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475)
感谢任何帮助。
答案 0 :(得分:2)
您正在设置“接受”标头,该标头定义您将接受哪种内容类型作为回复。
相反,您必须使用'application / json'设置标题'Content-Type'。
编辑:
在你的java代码中id是一个字符串,在邮递员中它是一个数字。 可能这会使服务器失败吗?
答案 1 :(得分:0)
试试这个方法
try {
return restTemplate.exchange(url, httpMethod, httpEntity, String.class);
} catch(HttpStatusCodeException e) {
return ResponseEntity.status(e.getRawStatusCode()).headers(e.getResponseHeaders())
.body(e.getResponseBodyAsString());
}
答案 2 :(得分:0)
我遇到了同样的问题。打印请求和 URL 后,我发现我使用了错误的端点。能否请您尝试打印日志中的 URL 并检查是否正确?