diff --git a/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestWrapper.java b/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestWrapper.java index d9adfd2e3e..8d2dd34ff8 100644 --- a/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestWrapper.java +++ b/httpclient/src/main/java/org/apache/http/client/methods/HttpRequestWrapper.java @@ -54,6 +54,7 @@ public class HttpRequestWrapper extends AbstractHttpMessage implements HttpUriRe private final HttpRequest original; private final HttpHost target; private final String method; + private RequestLine cachedRequestLine = null; private ProtocolVersion version; private URI uri; @@ -78,6 +79,7 @@ public ProtocolVersion getProtocolVersion() { public void setProtocolVersion(final ProtocolVersion version) { this.version = version; + this.cachedRequestLine = null; } @Override @@ -87,6 +89,7 @@ public URI getURI() { public void setURI(final URI uri) { this.uri = uri; + this.cachedRequestLine = null; } @Override @@ -106,16 +109,19 @@ public boolean isAborted() { @Override public RequestLine getRequestLine() { - String requestUri = null; - if (this.uri != null) { - requestUri = this.uri.toASCIIString(); - } else { - requestUri = this.original.getRequestLine().getUri(); - } - if (requestUri == null || requestUri.isEmpty()) { - requestUri = "/"; + if (this.cachedRequestLine == null) { + String requestUri = null; + if (this.uri != null) { + requestUri = this.uri.toASCIIString(); + } else { + requestUri = this.original.getRequestLine().getUri(); + } + if (requestUri == null || requestUri.isEmpty()) { + requestUri = "/"; + } + this.cachedRequestLine = new BasicRequestLine(this.method, requestUri, getProtocolVersion()); } - return new BasicRequestLine(this.method, requestUri, getProtocolVersion()); + return this.cachedRequestLine; } public HttpRequest getOriginal() {