@@ -553,14 +553,16 @@ private <T> T exchangeInternal(ExchangeFunction<T> exchangeFunction, boolean clo
553
553
URI uri = null ;
554
554
try {
555
555
uri = initUri ();
556
- HttpHeaders headers = initHeaders ();
557
- MultiValueMap <String , String > cookies = initCookies ();
558
- if (!CollectionUtils .isEmpty (cookies )) {
559
- headers .set (HttpHeaders .COOKIE , serializeCookies (cookies ));
556
+ String serializedCookies = serializeCookies ();
557
+ if (serializedCookies != null ) {
558
+ getHeaders ().set (HttpHeaders .COOKIE , serializedCookies );
560
559
}
560
+ HttpHeaders headers = initHeaders ();
561
561
562
562
ClientHttpRequest clientRequest = createRequest (uri );
563
- clientRequest .getHeaders ().addAll (headers );
563
+ if (headers != null ) {
564
+ clientRequest .getHeaders ().addAll (headers );
565
+ }
564
566
Map <String , Object > attributes = getAttributes ();
565
567
clientRequest .getAttributes ().putAll (attributes );
566
568
ClientRequestObservationContext observationContext = new ClientRequestObservationContext (clientRequest );
@@ -617,42 +619,28 @@ private URI initUri() {
617
619
return (this .uri != null ? this .uri : DefaultRestClient .this .uriBuilderFactory .expand ("" ));
618
620
}
619
621
620
- private HttpHeaders initHeaders () {
621
- HttpHeaders defaultHeaders = DefaultRestClient .this .defaultHeaders ;
622
- if (CollectionUtils .isEmpty (this .headers )) {
623
- return (defaultHeaders != null ? defaultHeaders : new HttpHeaders ());
624
- }
625
- else if (CollectionUtils .isEmpty (defaultHeaders )) {
626
- return this .headers ;
627
- }
628
- else {
629
- HttpHeaders result = new HttpHeaders ();
630
- result .putAll (defaultHeaders );
631
- result .putAll (this .headers );
632
- return result ;
633
- }
634
- }
635
-
636
- private MultiValueMap <String , String > initCookies () {
622
+ @ Nullable
623
+ private String serializeCookies () {
624
+ MultiValueMap <String , String > map ;
637
625
MultiValueMap <String , String > defaultCookies = DefaultRestClient .this .defaultCookies ;
638
626
if (CollectionUtils .isEmpty (this .cookies )) {
639
- return ( defaultCookies != null ? defaultCookies : new LinkedMultiValueMap <>()) ;
627
+ map = defaultCookies ;
640
628
}
641
629
else if (CollectionUtils .isEmpty (defaultCookies )) {
642
- return this .cookies ;
630
+ map = this .cookies ;
643
631
}
644
632
else {
645
- MultiValueMap < String , String > map = new LinkedMultiValueMap <>();
646
- map .putAll (DefaultRestClient . this . defaultCookies );
633
+ map = new LinkedMultiValueMap <>(defaultCookies . size () + this . cookies . size () );
634
+ map .putAll (defaultCookies );
647
635
map .putAll (this .cookies );
648
- return map ;
649
636
}
637
+ return (!CollectionUtils .isEmpty (map ) ? serializeCookies (map ) : null );
650
638
}
651
639
652
- private String serializeCookies (MultiValueMap <String , String > cookies ) {
640
+ private static String serializeCookies (MultiValueMap <String , String > map ) {
653
641
boolean first = true ;
654
642
StringBuilder sb = new StringBuilder ();
655
- for (Map .Entry <String , List <String >> entry : cookies .entrySet ()) {
643
+ for (Map .Entry <String , List <String >> entry : map .entrySet ()) {
656
644
for (String value : entry .getValue ()) {
657
645
if (!first ) {
658
646
sb .append ("; " );
@@ -666,12 +654,30 @@ private String serializeCookies(MultiValueMap<String, String> cookies) {
666
654
return sb .toString ();
667
655
}
668
656
657
+ @ Nullable
658
+ private HttpHeaders initHeaders () {
659
+ HttpHeaders defaultHeaders = DefaultRestClient .this .defaultHeaders ;
660
+ if (CollectionUtils .isEmpty (this .headers )) {
661
+ return defaultHeaders ;
662
+ }
663
+ else if (CollectionUtils .isEmpty (defaultHeaders )) {
664
+ return this .headers ;
665
+ }
666
+ else {
667
+ HttpHeaders result = new HttpHeaders ();
668
+ result .putAll (defaultHeaders );
669
+ result .putAll (this .headers );
670
+ return result ;
671
+ }
672
+ }
673
+
669
674
private ClientHttpRequest createRequest (URI uri ) throws IOException {
670
675
ClientHttpRequestFactory factory ;
671
676
if (DefaultRestClient .this .interceptors != null ) {
672
677
factory = DefaultRestClient .this .interceptingRequestFactory ;
673
678
if (factory == null ) {
674
- factory = new InterceptingClientHttpRequestFactory (DefaultRestClient .this .clientRequestFactory , DefaultRestClient .this .interceptors );
679
+ factory = new InterceptingClientHttpRequestFactory (
680
+ DefaultRestClient .this .clientRequestFactory , DefaultRestClient .this .interceptors );
675
681
DefaultRestClient .this .interceptingRequestFactory = factory ;
676
682
}
677
683
}
0 commit comments