在不使用 LinkedMultiValueMap 的情况下将请求主体传递给 Spring Rest 模板
Passing Request Body to Spring Rest Template without using LinkedMultiValueMap
我正在使用 Spring Rest 模板发出 Http PUT 请求,到目前为止,我一直在使用以下内容传递请求正文:
MultiValueMap<String, Object> body = new LinkedMultiValueMap<String, Object>();
body.add("account", testAccount);
HttpEntity<?> requestEntity = new HttpEntity<Object>(body, headers);
ResponseEntity<String> responseEntity;
try {
responseEntity = rest.exchange(uri, HttpMethod.PUT, requestEntity, String.class);
}
catch (HttpStatusCodeException e) {
log.error("Http PUT failed with response: " + e.getStatusText());
return ResponseEntity.status(e.getStatusCode()).body(e.getResponseBodyAsString());
}
return responseEntity;
发送到我的目标 API 的请求正文显示为:
{"account":[{"account_id":"495"}]}
这有效,但我的目标 API 不希望 account
对象有一个数组作为值,并且当前给我一个 500 内部服务器错误,所以,我的问题是,如何让 'account'
属性 的值成为对象而不是数组?例如,我希望请求正文显示为:
{"account":{"account_id":"495"}}
是否可以使用另一种不接受多个值的 Map
类型?
如果可能,我还是想使用exchange
方法。
任何对此的帮助都会很棒!非常感谢
答案实际上是简单地使用常规 HashMap
而不是 MultiValueMap
。如此处所示,当您想要将数组添加到请求正文中的单个键时,会使用 MultiValueMap
情况。
感谢大家的帮助。
我正在使用 Spring Rest 模板发出 Http PUT 请求,到目前为止,我一直在使用以下内容传递请求正文:
MultiValueMap<String, Object> body = new LinkedMultiValueMap<String, Object>();
body.add("account", testAccount);
HttpEntity<?> requestEntity = new HttpEntity<Object>(body, headers);
ResponseEntity<String> responseEntity;
try {
responseEntity = rest.exchange(uri, HttpMethod.PUT, requestEntity, String.class);
}
catch (HttpStatusCodeException e) {
log.error("Http PUT failed with response: " + e.getStatusText());
return ResponseEntity.status(e.getStatusCode()).body(e.getResponseBodyAsString());
}
return responseEntity;
发送到我的目标 API 的请求正文显示为:
{"account":[{"account_id":"495"}]}
这有效,但我的目标 API 不希望 account
对象有一个数组作为值,并且当前给我一个 500 内部服务器错误,所以,我的问题是,如何让 'account'
属性 的值成为对象而不是数组?例如,我希望请求正文显示为:
{"account":{"account_id":"495"}}
是否可以使用另一种不接受多个值的 Map
类型?
如果可能,我还是想使用exchange
方法。
任何对此的帮助都会很棒!非常感谢
答案实际上是简单地使用常规 HashMap
而不是 MultiValueMap
。如此处所示,当您想要将数组添加到请求正文中的单个键时,会使用 MultiValueMap
情况。
感谢大家的帮助。