@ -17,15 +17,12 @@
@@ -17,15 +17,12 @@
package org.springframework.http.client ;
import java.io.IOException ;
import java.io.OutputStream ;
import java.net.URI ;
import java.util.List ;
import org.springframework.http.HttpHeaders ;
import org.springframework.http.HttpMethod ;
import org.springframework.http.HttpRequest ;
import org.springframework.http.StreamingHttpOutputMessage ;
import org.springframework.util.StreamUtils ;
/ * *
* Wrapper for a { @link ClientHttpRequest } that has support for { @link ClientHttpRequestInterceptor
@ -80,7 +77,7 @@ class InterceptingClientHttpRequest extends AbstractBufferingClientHttpRequest {
@@ -80,7 +77,7 @@ class InterceptingClientHttpRequest extends AbstractBufferingClientHttpRequest {
}
private static class EndOfChainRequestExecution implements ClientHttpRequestExecution {
private class EndOfChainRequestExecution implements ClientHttpRequestExecution {
private final ClientHttpRequestFactory requestFactory ;
@ -90,33 +87,10 @@ class InterceptingClientHttpRequest extends AbstractBufferingClientHttpRequest {
@@ -90,33 +87,10 @@ class InterceptingClientHttpRequest extends AbstractBufferingClientHttpRequest {
@Override
public ClientHttpResponse execute ( HttpRequest request , byte [ ] body ) throws IOException {
HttpMethod method = request . getMethod ( ) ;
ClientHttpRequest delegate = this . requestFactory . createRequest ( request . getURI ( ) , method ) ;
ClientHttpRequest delegate = this . requestFactory . createRequest ( request . getURI ( ) , request . getMethod ( ) ) ;
request . getHeaders ( ) . forEach ( ( key , value ) - > delegate . getHeaders ( ) . addAll ( key , value ) ) ;
request . getAttributes ( ) . forEach ( ( key , value ) - > delegate . getAttributes ( ) . put ( key , value ) ) ;
if ( body . length > 0 ) {
long contentLength = delegate . getHeaders ( ) . getContentLength ( ) ;
if ( contentLength > - 1 & & contentLength ! = body . length ) {
delegate . getHeaders ( ) . setContentLength ( body . length ) ;
}
if ( delegate instanceof StreamingHttpOutputMessage streamingOutputMessage ) {
streamingOutputMessage . setBody ( new StreamingHttpOutputMessage . Body ( ) {
@Override
public void writeTo ( OutputStream outputStream ) throws IOException {
StreamUtils . copy ( body , outputStream ) ;
}
@Override
public boolean repeatable ( ) {
return true ;
}
} ) ;
}
else {
StreamUtils . copy ( body , delegate . getBody ( ) ) ;
}
}
return delegate . execute ( ) ;
return executeWithRequest ( delegate , body , false ) ;
}
}