/**
* Execute the given method on the provided URI.
* <p>The {@link ClientHttpRequest} is processed using the {@link RequestCallback};
* the response with the {@link ResponseExtractor}.
* @param url the fully-expanded URL to connect to
* @param method the HTTP method to execute (GET, POST, etc.)
* @param requestCallback object that prepares the request (can be {@code null})
* @param responseExtractor object that extracts the return value from the response (can be {@code null})
* @return an arbitrary object, as returned by the {@link ResponseExtractor}
*/
protected <T> T doExecute(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor) throws RestClientException
{
Assert.notNull(url, "'url' must not be null");
Assert.notNull(method, "'method' must not be null");
ClientHttpResponse response = null;
try
{
ClientHttpRequest request = createRequest(url, method);
if (requestCallback != null)
{
requestCallback.doWithRequest(request);
}
response = request.execute();
handleResponse(url, method, response);
if (responseExtractor != null)
{
return responseExtractor.extractData(response);
}
else
{
return null;
}
}
catch (IOException ex)
{
String resource = url.toString();
String query = url.getRawQuery();
resource = (query != null ? resource.substring(0, resource.indexOf(query) - 1) : resource);
throw new ResourceAccessException("I/O error on " + method.name() + " request for \"" + resource + "\": " + ex.getMessage(), ex);
}
finally
{
if (response != null)
{
response.close();
}
}
}
org.springframework.web.client.RestTemplate
spencer_tseng2023-11-07 9:24
相关推荐
Mike!2 分钟前
C++进阶 set和map讲解翔云1234563 分钟前
Go语言的垃圾回收(GC)机制的迭代和优化历史不见长安见晨雾39 分钟前
将Java程序打包成EXE程序逸狼1 小时前
【JavaEE初阶】多线程(5 单例模式 \ 阻塞队列)希忘auto2 小时前
Java之线程篇四蓝黑20202 小时前
Java知识点小结3:内存回收Yz98762 小时前
Hadoop里面MapReduce的序列化与Java序列化比较凯哥Java3 小时前
优化批处理流程:自定义BatchProcessorUtils的设计与应用njnu@liyong3 小时前
AOP-前置原理-怎么判断和拦截?末央&3 小时前
【C++】内存管理