< prev index next >

src/java.httpclient/share/classes/java/net/http/RedirectFilter.java

Print this page

        

*** 31,40 **** --- 31,41 ---- class RedirectFilter implements HeaderFilter { HttpRequestImpl requestImpl; HttpRequest request; HttpClientImpl client; + HttpClient.Redirect policy; String method; final static int DEFAULT_MAX_REDIRECTS = 5; URI uri; final static int max_redirects = Utils.getIntegerNetProperty(
*** 42,51 **** --- 43,53 ---- ); @Override public void request(HttpRequestImpl r) throws IOException { this.request = r; + this.policy = request.followRedirects(); this.client = r.getClient(); this.method = r.method(); this.requestImpl = r; this.uri = r.uri(); }
*** 59,69 **** * checks to see if new request needed and returns it. * Null means response is ok to return to user. */ private HttpRequestImpl handleResponse(HttpResponseImpl r) { int rcode = r.statusCode(); ! if (rcode == 200) { return null; } if (rcode >= 300 && rcode <= 399) { URI redir = getRedirectedURI(r.headers()); if (canRedirect(r) && ++r.request.exchange.numberOfRedirects < max_redirects) { --- 61,71 ---- * checks to see if new request needed and returns it. * Null means response is ok to return to user. */ private HttpRequestImpl handleResponse(HttpResponseImpl r) { int rcode = r.statusCode(); ! if (rcode == 200 || policy == HttpClient.Redirect.NEVER) { return null; } if (rcode >= 300 && rcode <= 399) { URI redir = getRedirectedURI(r.headers()); if (canRedirect(r) && ++r.request.exchange.numberOfRedirects < max_redirects) {
*** 77,86 **** --- 79,89 ---- return null; } private URI getRedirectedURI(HttpHeaders headers) { URI redirectedURI; + String ss = headers.firstValue("Location").orElse("Not present"); redirectedURI = headers.firstValue("Location") .map((s) -> URI.create(s)) .orElseThrow(() -> new UncheckedIOException( new IOException("Invalid redirection")));
< prev index next >