Spring - 使用 HttpEntity 从 ResponseEntity 获取正文的通用方法
Spring - generic method for getting body from ResponseEntity using HttpEntity
在我的代码中,我经常通过以下方式将 HttpEntity 与 ResponseEntity 一起使用:
HttpEntity<?> request = new HttpEntity<String>(myObject, headers);
ResponseEntity<String> response = restTemplate.exchange("someurl", HttpMethod.POST, request, String.class);
然后
response.getBody()
我一直重复这段代码,我想知道是否有可能创建一个通用方法,当我向它提供我想要发送的对象时,它允许我得到 response.body(),一个url,和一个 HttpMethod 类型。
大多数情况下,响应主体是一个字符串,但也可以是一个对象。
你可以使用下面的代码,这里的响应体和请求体是通用的:
public <T, R> T yourMethodName(R requestBody,
MultiValueMap<String, String> headers,
String url,
HttpMethod type,
Class<T> clazz) {
HttpEntity<?> request = new HttpEntity<String>(requestBody, headers);
//You have to create restemplate Obj somewhere
ResponseEntity<T> response = restTemplate.exchange(url, type, request, clazz);
return response.getBody();
}
在我的代码中,我经常通过以下方式将 HttpEntity 与 ResponseEntity 一起使用:
HttpEntity<?> request = new HttpEntity<String>(myObject, headers);
ResponseEntity<String> response = restTemplate.exchange("someurl", HttpMethod.POST, request, String.class);
然后
response.getBody()
我一直重复这段代码,我想知道是否有可能创建一个通用方法,当我向它提供我想要发送的对象时,它允许我得到 response.body(),一个url,和一个 HttpMethod 类型。 大多数情况下,响应主体是一个字符串,但也可以是一个对象。
你可以使用下面的代码,这里的响应体和请求体是通用的:
public <T, R> T yourMethodName(R requestBody,
MultiValueMap<String, String> headers,
String url,
HttpMethod type,
Class<T> clazz) {
HttpEntity<?> request = new HttpEntity<String>(requestBody, headers);
//You have to create restemplate Obj somewhere
ResponseEntity<T> response = restTemplate.exchange(url, type, request, clazz);
return response.getBody();
}