@@ -115,33 +115,33 @@ private <T> HttpResponse<T> doSend(
115115 while (true ) {
116116 httpRequestChecker .check (currentRequestUri );
117117 var response = delegate .send (currentRequest , responseBodyHandler , httpRequestChecker );
118- if (HttpUtils .isRedirectStatusCode (response .statusCode ())) {
119- if (redirectCount >= MAX_HTTP_REDIRECTS ) {
120- throw new HttpClientException (ErrorMessages .create ("httpTooManyRedirects" ));
121- }
122- var location =
123- response
124- .headers ()
125- .firstValue ("Location" )
126- .orElseThrow (
127- () -> new HttpClientException (ErrorMessages .create ("httpRedirectNoLocation" )));
128- URI redirectUri ;
129- try {
130- redirectUri = currentRequestUri .resolve (location );
131- } catch (IllegalArgumentException e ) {
132- throw new HttpClientException (ErrorMessages .create ("httpRedirectInvalidUri" , location ));
133- }
134- if (currentRequestUri .getScheme ().equals ("https" )
135- && redirectUri .getScheme ().equals ("http" )) {
136- throw new HttpClientException (
137- ErrorMessages .create ("httpRedirectCannotDowngrade" , currentRequestUri , redirectUri ));
138- }
139- currentRequestUri = rewriteUri (redirectUri );
140- currentRequest = rewriteRequest (request , currentRequestUri );
141- redirectCount ++;
142- } else {
118+ if (!HttpUtils .isRedirectStatusCode (response .statusCode ())) {
143119 return response ;
144120 }
121+ if (redirectCount >= MAX_HTTP_REDIRECTS ) {
122+ throw new HttpClientException (ErrorMessages .create ("httpTooManyRedirects" , MAX_HTTP_REDIRECTS ));
123+ }
124+ var location =
125+ response
126+ .headers ()
127+ .firstValue ("Location" );
128+ if (location .isEmpty ()) {
129+ throw new HttpClientException (ErrorMessages .create ("httpRedirectNoLocation" , currentRequestUri ));
130+ }
131+ URI redirectUri ;
132+ try {
133+ redirectUri = currentRequestUri .resolve (location .get ());
134+ } catch (IllegalArgumentException e ) {
135+ throw new HttpClientException (ErrorMessages .create ("httpRedirectInvalidUri" , currentRequestUri , location .get ()));
136+ }
137+ if (currentRequestUri .getScheme ().equals ("https" )
138+ && redirectUri .getScheme ().equals ("http" )) {
139+ throw new HttpClientException (
140+ ErrorMessages .create ("httpRedirectCannotDowngrade" , currentRequestUri , redirectUri ));
141+ }
142+ currentRequestUri = rewriteUri (redirectUri );
143+ currentRequest = rewriteRequest (request , currentRequestUri );
144+ redirectCount ++;
145145 }
146146 }
147147
0 commit comments