RestTemplate-postForObject源码
参数: 请求路径, 请求参数, 返回类型, 扩展模板变量
参数: 请求参数, 返回类型
HttpEntityRequestCallback构造器
HttpEntityRequestCallback是RestTemplate的私有内部类,继承了RestTemplate私有内部类 AcceptHeaderRequestCallback,AcceptHeaderRequestCallback实现了RequestCallback接口,重写了doWithRequest方法
HttpEntity是 HTTP请求或响应实体![](data:image/png;base64,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)
public void doWithRequest(ClientHttpRequest httpRequest) throws IOException {
//调用父类方法
super.doWithRequest(httpRequest);
Object requestBody = this.requestEntity.getBody();
//判断内部类中的HttpEntity是否有参数
if (requestBody == null) {
HttpHeaders httpHeaders = httpRequest.getHeaders();
HttpHeaders requestHeaders = this.requestEntity.getHeaders();
if (!requestHeaders.isEmpty()) {
//如果header不为空,将header的值赋给方法接收的参数ClientHttpRequest
requestHeaders.forEach((key, values) -> {
httpHeaders.put(key, new LinkedList(values));
});
}
//添加content长度
if (httpHeaders.getContentLength() < 0L) {
httpHeaders.setContentLength(0L);
}
} else {
Class<?> requestBodyClass = requestBody.getClass();
Type requestBodyType = this.requestEntity instanceof RequestEntity ? ((RequestEntity)this.requestEntity).getType() : requestBodyClass;
HttpHeaders httpHeadersx = httpRequest.getHeaders();
HttpHeaders requestHeadersx = this.requestEntity.getHeaders();
MediaType requestContentType = requestHeadersx.getContentType();
//消息转换器列表
Iterator var8 = RestTemplate.this.getMessageConverters().iterator();
while(var8.hasNext()) {
//策略接口,指定可以从HTTP请求和响应转换的转换器
HttpMessageConverter<?> messageConverter = (HttpMessageConverter)var8.next();
if (messageConverter instanceof GenericHttpMessageConverter) {
//可以将HTTP请求转换为指定泛型类型的目标对象,将指定泛型类型的源对象转换为HTTP响应
GenericHttpMessageConverter<Object> genericConverter = (GenericHttpMessageConverter)messageConverter;
//判断 指示此转换器是否可以写入给定的类
if (genericConverter.canWrite((Type)requestBodyType, requestBodyClass, requestContentType)) {
if (!requestHeadersx.isEmpty()) {
requestHeadersx.forEach((key, values) -> {
httpHeadersx.put(key, new LinkedList(values));
});
}
//打印debug日志
this.logBody(requestBody, requestContentType, genericConverter);
将给定对象写入给定的输出消息
genericConverter.write(requestBody, (Type)requestBodyType, requestContentType, httpRequest);
return;
}
} else if (messageConverter.canWrite(requestBodyClass, requestContentType)) {
if (!requestHeadersx.isEmpty()) {
requestHeadersx.forEach((key, values) -> {
httpHeadersx.put(key, new LinkedList(values));
});
}
this.logBody(requestBody, requestContentType, messageConverter);
messageConverter.write(requestBody, requestContentType, httpRequest);
return;
}
}
String message = "No HttpMessageConverter for [" + requestBodyClass.getName() + "]";
if (requestContentType != null) {
message = message + " and content type [" + requestContentType + "]";
}
throw new RestClientException(message);
}
}
private void logBody(Object body, @Nullable MediaType mediaType, HttpMessageConverter<?> converter) {
if (RestTemplate.this.logger.isDebugEnabled()) {
if (mediaType != null) {
RestTemplate.this.logger.debug("Writing [" + body + "] as \"" + mediaType + "\"");
} else {
String classname = converter.getClass().getName();
RestTemplate.this.logger.debug("Writing [" + body + "] with " + classname);
}
}
}
响应提取器,它使用给定的实体转换器 将响应转换为类型T
最后的execute方法
@Nullable
public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
//使用URI变量映射展开给定的URI模板
URI expanded = this.getUriTemplateHandler().expand(url, uriVariables);
return this.doExecute(expanded, method, requestCallback, responseExtractor);
}
参数:url - 要连接的完全扩展的URL, method - 要执行的HTTP方法(GET,POST等), requestCallback- 准备请求的对象(可以null), responseExtractor- 从响应中提取返回值的对象(可以null)
@Nullable
protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
Assert.notNull(url, "URI is required");
Assert.notNull(method, "HttpMethod is required");
ClientHttpResponse response = null;
Object var14;
try {
//通过工厂模式创建ClientHttpRequest对象
ClientHttpRequest request = this.createRequest(url, method);
if (requestCallback != null) {
requestCallback.doWithRequest(request);
}
//执行请求
response = request.execute();
//处理给定的响应,执行适当的日志记录并在ResponseErrorHandler必要时调用
this.handleResponse(url, method, response);
//extractData 从给定数据中提取数据ClientHttpResponse并将其返回
var14 = responseExtractor != null ? responseExtractor.extractData(response) : null;
} catch (IOException var12) {
String resource = url.toString();
String query = url.getRawQuery();
resource = query != null ? resource.substring(0, resource.indexOf(63)) : resource;
throw new ResourceAccessException("I/O error on " + method.name() + " request for \"" + resource + "\": " + var12.getMessage(), var12);
} finally {
if (response != null) {
response.close();
}
}
return var14;
}
博客链接:https://www.cnblogs.com/gqymy/