You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by og...@apache.org on 2002/12/03 16:28:19 UTC
cvs commit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclient TestLocalHost.java TestNoHost.java
oglueck 2002/12/03 07:28:18
Modified: httpclient/src/java/org/apache/commons/httpclient
HttpClient.java HttpMethodBase.java
httpclient/src/test/org/apache/commons/httpclient
TestLocalHost.java TestNoHost.java
Log:
fixed tests
Contributed by: Eric Johnson
Revision Changes Path
1.62 +5 -5 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java
Index: HttpClient.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- HttpClient.java 3 Dec 2002 05:46:15 -0000 1.61
+++ HttpClient.java 3 Dec 2002 15:28:18 -0000 1.62
@@ -215,7 +215,7 @@
*
* @param timeout the timeout in milliseconds
*
- * @see HttpConnectionManager#getConnection(String, long)
+ * @see HttpConnectionManager#getConnection(HostConfiguration, long)
*/
public synchronized void setHttpConnectionFactoryTimeout( long timeout ) {
this.httpConnectionTimeout = timeout;
1.83 +196 -196 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java
Index: HttpMethodBase.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- HttpMethodBase.java 3 Dec 2002 15:20:32 -0000 1.82
+++ HttpMethodBase.java 3 Dec 2002 15:28:18 -0000 1.83
@@ -84,11 +84,11 @@
* <p>
* An abstract base implementation of {@link HttpMethod}.
* </p>
- *
+ *
* <p>
* At minimum, subclasses will need to override
* </p>
- *
+ *
* <dl>
* <dt>
* {@link #getName}
@@ -97,12 +97,12 @@
* to return the approriate name for this method
* </dd>
* </dl>
- *
+ *
* <p>
* When a method's request may contain a body, subclasses will typically want
* to override:
* </p>
- *
+ *
* <dl>
* <dt>
* {@link #getRequestContentLength}
@@ -117,12 +117,12 @@
* to write the body
* </dd>
* </dl>
- *
+ *
* <p>
* When a method requires additional request headers, subclasses will typically
* want to override:
* </p>
- *
+ *
* <dl>
* <dt>
* {@link #addRequestHeaders addRequestHeaders(HttpState,HttpConnection)}
@@ -131,12 +131,12 @@
* to write those headers
* </dd>
* </dl>
- *
+ *
* <p>
* When a method expects specific response headers, subclasses may want to
* override:
* </p>
- *
+ *
* <dl>
* <dt>
* {@link #processResponseHeaders
@@ -146,8 +146,8 @@
* to handle those headers
* </dd>
* </dl>
- *
- *
+ *
+ *
* @version $Revision$ $Date$
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
* @author Rodney Waldhoff
@@ -175,7 +175,7 @@
static {
String agent = System.getProperties()
- .getProperty("httpclient.useragent",
+ .getProperty("httpclient.useragent",
"Jakarta Commons-HttpClient/2.0M1");
USER_AGENT = new Header("User-Agent", agent);
}
@@ -208,7 +208,7 @@
/** The response body, assuming it has not be intercepted by a sub-class. */
private InputStream responseStream = null;
-
+
/** The connection that the response stream was read from. */
private HttpConnection responseConnection = null;
@@ -255,7 +255,7 @@
/**
* Path-specifying constructor.
- *
+ *
* @param path my path which can include a query
*/
public HttpMethodBase(String path) {
@@ -275,7 +275,7 @@
/**
* Obtain the name of this method, suitable for use in the "request line",
* for example <tt>GET</tt> or <tt>POST</tt>.
- *
+ *
* @return the name of this method
*/
public abstract String getName();
@@ -283,7 +283,7 @@
/**
* Set whether or not I should automatically follow HTTP redirects (status
* code 302, etc.)
- *
+ *
* @param followRedirects true to follow redirects, false otherwise
*/
public void setFollowRedirects(boolean followRedirects) {
@@ -293,7 +293,7 @@
/**
* Whether or not I should automatically follow HTTP redirects (status code
* 302, etc.)
- *
+ *
* @return <tt>true</tt> if I will automatically follow HTTP redirects
*/
public boolean getFollowRedirects() {
@@ -302,7 +302,7 @@
/**
* Set whether or not I should use the HTTP/1.1 protocol.
- *
+ *
* @param http11 true to use HTTP/1.1, false to use 1.0
*/
public void setHttp11(boolean http11) {
@@ -334,9 +334,9 @@
// ---------------------------------------------- Protected Utility Methods
/**
- * Access to flag to determine if client should use
+ * Access to flag to determine if client should use
* HTTP/1.1 protocol.
- *
+ *
* @return <tt>true</tt> if I should use the HTTP/1.1 protocol
*/
public boolean isHttp11() {
@@ -345,7 +345,7 @@
/**
* Set the path part of my request.
- *
+ *
* @param path the path to request
*/
public void setPath(String path) {
@@ -356,8 +356,8 @@
* Add the specified request header.
*
* If a header of the same name already exists, the new value will be
- * appended onto the the existing value list.
- * A <i>header</i> value of <code>null</code> will be ignored.
+ * appended onto the the existing value list.
+ * A <i>header</i> value of <code>null</code> will be ignored.
* Note that header-name matching is case insensitive.
*
* @param header the header to add to the request
@@ -382,7 +382,7 @@
/**
* Get the path part of my request.
- *
+ *
* @return the path to request or "/" if the path is blank.
*/
public String getPath() {
@@ -395,7 +395,7 @@
* URIUtil.encodeAll, URIUtil.encodeWithinQuery or URIUtil.encodeQuery can
* be used to encode parameter names and values.
* The query string should not start with the question mark character.
- *
+ *
* @param queryString the query string
*/
public void setQueryString(String queryString) {
@@ -404,7 +404,7 @@
/**
* Set my query string.
- *
+ *
* @param params an array of {@link NameValuePair}s to add as query string
* parameterss
*/
@@ -445,7 +445,7 @@
/**
* Get my query string.
- *
+ *
* @return The query string portion of the request
*/
public String getQueryString() {
@@ -455,7 +455,7 @@
/**
* Set the specified request header, overwriting any previous value. Note
* that header-name matching is case-insensitive.
- *
+ *
* @param headerName the header's name
* @param headerValue the header's value
*/
@@ -467,7 +467,7 @@
/**
* Set the specified request header, overwriting any previous value. Note
* that header-name matching is case insensitive.
- *
+ *
* @param header the header
*/
public void setRequestHeader(Header header) {
@@ -479,9 +479,9 @@
* matching is case insensitive. <tt>null</tt> will be returned if either
* <i>headerName</i> is <tt>null</tt> or there is no matching header for
* <i>headerName</i>.
- *
+ *
* @param headerName the header name to match
- *
+ *
* @return the matching header
*/
public Header getRequestHeader(String headerName) {
@@ -491,7 +491,7 @@
/**
* Provides access to the request headers.
- *
+ *
* @return an array of my request headers.
*/
public Header[] getRequestHeaders() {
@@ -500,8 +500,8 @@
}
/**
- * Provide access to the status code.
- *
+ * Convenience method top provide access to the status code.
+ *
* @return the status code associated with the latest response.
*/
public int getStatusCode() {
@@ -510,7 +510,7 @@
/**
* Provide access to the status line.
- *
+ *
* @return the status line object from the latest response.
* @since 2.0
*/
@@ -528,7 +528,7 @@
/**
* Provide access to the response headers
- *
+ *
* @return an array of my response headers.
*/
public Header[] getResponseHeaders() {
@@ -541,14 +541,14 @@
* matching is case insensitive. <tt>null</tt> will be returned if either
* <i>headerName</i> is <tt>null</tt> or there is no matching header for
* <i>headerName</i>.
- *
+ *
* @param headerName the header name to match
- *
+ *
* @return the matching header
*/
public Header getResponseHeader(String headerName) {
return (headerName == null)
- ? null
+ ? null
: (Header) (responseHeaders.get(headerName.toLowerCase()));
}
@@ -580,9 +580,9 @@
/**
* Return my response body, if any, as an {@link InputStream}. Otherwise
* return <tt>null</tt>.
- *
+ *
* @return the response body as an {@link InputStream}
- *
+ *
* @throws IOException when there are errors obtaining the response
*/
public InputStream getResponseBodyAsStream() throws IOException {
@@ -599,7 +599,7 @@
/**
* Gets the response body as a string.
- *
+ *
* <b>Note:</b> The string conversion done on the data is done with the
* default character encoding. The use of this method may be non-portable.
*
@@ -661,7 +661,7 @@
/**
* Provide access to the status text
- *
+ *
* @return the status text (or "reason phrase") associated with the latest
* response.
*/
@@ -676,7 +676,7 @@
* most Http user agent's do (and many HTTP servers expect. NOTE:
* StrictMode is currently experimental and its functionlaity may change
* in the future.
- *
+ *
* @param strictMode true for strict mode, false otherwise
*/
public void setStrictMode(boolean strictMode) {
@@ -686,7 +686,7 @@
/**
* Returns the value of strictMode. NOTE: StrictMode is currently
* experimental and its functionlaity may change in the future.
- *
+ *
* @return true if strict mode is enabled.
*/
public boolean isStrictMode() {
@@ -696,7 +696,7 @@
/**
* Add the specified request header, NOT overwriting any previous value.
* Note that header-name matching is case insensitive.
- *
+ *
* @param headerName the header's name
* @param headerValue the header's value
*/
@@ -737,7 +737,7 @@
private boolean shouldCloseConnection() {
if (!http11) {
- if (getName().equals(ConnectMethod.NAME) &&
+ if (getName().equals(ConnectMethod.NAME) &&
(statusLine.getStatusCode() == HttpStatus.SC_OK)) {
log.debug("Will leave connection open for tunneling");
return false;
@@ -758,12 +758,12 @@
}
private void wrapResponseStream( HttpConnection connection ) {
-
+
if ( responseStream != null ) {
this.responseConnection = connection;
- this.responseStream = new ResponseAutoReleaseInputStream(responseStream);
+ this.responseStream = new ResponseAutoReleaseInputStream(responseStream);
}
-
+
}
/**
@@ -772,7 +772,7 @@
* we don't yet have a good way to get the new connection. For the time
* being, we just return the redirect response code, and allow the user
* agent to resubmit if desired.
- *
+ *
* @param state {@link HttpState} information to associate with this
* request. Must be non-null.
* @param conn the{@link HttpConnection} to write to/read from. Must be
@@ -781,9 +781,9 @@
* because we don't yet have a good way to get the new connection.
* For the time being, we just return the 302 response, and allow
* the user agent to resubmit if desired.
- *
+ *
* @return the integer status code if one was obtained, or <tt>-1</tt>
- *
+ *
* @throws HttpException if an protocol exception occurs
* @throws HttpRecoverableException if too many redirects occur.
* @throws IOException if an I/O error occurs
@@ -793,7 +793,7 @@
throws HttpException, IOException, NullPointerException {
log.trace("enter HttpMethodBase.execute(HttpState, HttpConnection)");
- //TODO: This method is too large
+ //TODO: This method is too large
//check some error conditions
if (null == state) {
throw new NullPointerException("HttpState parameter");
@@ -843,7 +843,7 @@
return statusCode;
}
} else { //let the client handle the authenticaiton
- wrapResponseStream(conn);
+ wrapResponseStream(conn);
return statusCode;
}
break;
@@ -854,7 +854,7 @@
log.debug("Redirect required");
if (! processRedirectResponse(state, conn)) {
- wrapResponseStream(conn);
+ wrapResponseStream(conn);
return statusCode;
}
break;
@@ -885,7 +885,7 @@
} //end of loop
wrapResponseStream(conn);
-
+
log.error("Narrowly avoided an infinite loop in execute");
throw new HttpRecoverableException("Maximum redirects ("+ maxForwards +") exceeded");
}
@@ -914,18 +914,18 @@
//rfc2616 demands the location value be a complete URI
//Location = "Location" ":" absoluteURI
- URL redirectUrl = null;
- URL currentUrl = null;
+ URL redirectUrl = null;
+ URL currentUrl = null;
try {
- currentUrl = new URL(conn.getProtocol().toLowerCase(),
+ currentUrl = new URL(conn.getProtocol().toLowerCase(),
conn.getHost(), conn.getPort(), "");
redirectUrl = new URL(location);
} catch (MalformedURLException e) {
if (isStrictMode()) {
log.warn("Redirected location '" + location +
"' is not acceptable in strict mode");
- return false;
+ return false;
} else { //location is incomplete, use current values for defaults
try {
log.debug("Redirect URL is not absolute - parsing as relative");
@@ -961,7 +961,7 @@
}
- /**
+ /**
* Check for a valid redirect given the current conn and new url.
* Redirect to a different protocol, host or port are checked for validity.
*
@@ -970,7 +970,7 @@
* @throws HttpException if the redirect is invalid
* @since 2.0
*/
- private static void checkValidRedirect(URL currentUrl, URL redirectUrl)
+ private static void checkValidRedirect(URL currentUrl, URL redirectUrl)
throws HttpException {
log.trace("enter HttpMethodBase.checkValidRedirect(HttpConnection, URL)");
@@ -997,21 +997,21 @@
newPort = getDefaultPort(newProtocol);
}
if (oldPort != newPort) {
- throw new HttpException("Redirect from port " + oldPort
+ throw new HttpException("Redirect from port " + oldPort
+ " to " + newPort + " is not supported");
}
}
- /**
+ /**
* Returns the default port for the given protocol.
- *
+ *
* @param protocol currently only http and https are recognized
* @return the default port of the given protocol or -1 if the
* protocol is not recognized.
*
* @since 2.0
- *
+ *
*/
private static int getDefaultPort(String protocol) {
String proto = protocol.toLowerCase().trim();
@@ -1026,7 +1026,7 @@
/**
* Whether the object has been used and not recycled.
- *
+ *
* @return <tt>true</tt> if I have been {@link #execute executed} but not
* recycled.
*/
@@ -1042,7 +1042,7 @@
log.trace("enter HttpMethodBase.recycle()");
releaseConnection();
-
+
path = null;
followRedirects = false;
doAuthentication = true;
@@ -1058,23 +1058,23 @@
/**
* @see org.apache.commons.httpclient.HttpMethod#releaseConnection()
- *
+ *
* @since 2.0
*/
public void releaseConnection() {
-
+
if ( responseConnection != null ) {
responseConnection.releaseConnection();
this.responseConnection = null;
this.responseStream = null;
}
-
+
}
-
+
/**
* Remove the request header associated with the given name. Note that
* header-name matching is case insensitive.
- *
+ *
* @param headerName the header name
*/
public void removeRequestHeader(String headerName) {
@@ -1085,11 +1085,11 @@
/**
* Confirm that I am ready to execute.
- *
+ *
* <p>
* This implementation always returns <tt>true</tt>.
* </p>
- *
+ *
* @return <tt>true</tt>
*/
public boolean validate() {
@@ -1099,16 +1099,16 @@
/**
* Return the length (in bytes) of my request body, suitable for use in a
* <tt>Content-Length</tt> header.
- *
+ *
* <p>
* Return <tt>-1</tt> when the content-length is unknown.
* </p>
- *
+ *
* <p>
* This implementation returns <tt>0</tt>, indicating that the request has
* no body.
* </p>
- *
+ *
* @return <tt>0</tt>, indicating that the request has no body.
*/
protected int getRequestContentLength() {
@@ -1118,15 +1118,15 @@
/**
* Adds an <tt>Authorization</tt> request if needed, as long as no
* <tt>Authorization</tt> request header already exists.
- *
+ *
* @param state current state of http requests
* @param conn the connection to use for I/O
- *
+ *
* @throws IOException when errors occur reading or writing to/from the
* connection
* @throws HttpException when a recoverable error occurs
*/
- protected void addAuthorizationRequestHeader(HttpState state,
+ protected void addAuthorizationRequestHeader(HttpState state,
HttpConnection conn)
throws IOException, HttpException {
log.trace("enter HttpMethodBase.addAuthorizationRequestHeader("
@@ -1150,15 +1150,15 @@
* Adds a <tt>Content-Length</tt> or <tt>Transfer-Encoding: Chunked</tt>
* request header, as long as no <tt>Content-Length</tt> request header
* already exists.
- *
+ *
* @param state current state of http requests
* @param conn the connection to use for I/O
- *
+ *
* @throws IOException when errors occur reading or writing to/from the
* connection
* @throws HttpException when a recoverable error occurs
*/
- protected void addContentLengthRequestHeader(HttpState state,
+ protected void addContentLengthRequestHeader(HttpState state,
HttpConnection conn)
throws IOException, HttpException {
log.trace("enter HttpMethodBase.addContentLengthRequestHeader("
@@ -1177,10 +1177,10 @@
/**
* Adds a <tt>Cookie</tt> request containing the matching {@link Cookie}s.
- *
+ *
* @param state current state of http requests
* @param conn the connection to use for I/O
- *
+ *
* @throws IOException when errors occur reading or writing to/from the
* connection
* @throws HttpException when a recoverable error occurs
@@ -1190,11 +1190,11 @@
log.trace("enter HttpMethodBase.addCookieRequestHeader(HttpState, "
+ "HttpConnection)");
- Header cookieHeader = Cookie.createCookieHeader(conn.getHost(),
- conn.getPort(),
- getPath(),
- conn.isSecure(),
- new Date(),
+ Header cookieHeader = Cookie.createCookieHeader(conn.getHost(),
+ conn.getPort(),
+ getPath(),
+ conn.isSecure(),
+ new Date(),
state.getCookies());
if (null != cookieHeader) {
setRequestHeader(cookieHeader);
@@ -1204,10 +1204,10 @@
/**
* Adds a <tt>Host</tt> request header, as long as no <tt>Host</tt> request
* header already exists.
- *
+ *
* @param state current state of http requests
* @param conn the connection to use for I/O
- *
+ *
* @throws IOException when errors occur reading or writing to/from the
* connection
* @throws HttpException when a recoverable error occurs
@@ -1217,9 +1217,9 @@
log.trace("enter HttpMethodBase.addHostRequestHeader(HttpState, "
+ "HttpConnection)");
- // Per 19.6.1.1 of RFC 2616, it is legal for HTTP/1.0 based
+ // Per 19.6.1.1 of RFC 2616, it is legal for HTTP/1.0 based
// applications to send the Host request-header.
- // TODO: Add the ability to disable the sending of this header for
+ // TODO: Add the ability to disable the sending of this header for
// HTTP/1.0 requests.
String host = conn.getHost();
int port = conn.getPort();
@@ -1250,15 +1250,15 @@
/**
* Adds a <tt>Proxy-Authorization</tt> request if needed, as long as no
* <tt>Proxy-Authorization</tt> request header already exists.
- *
+ *
* @param state current state of http requests
* @param conn the connection to use for I/O
- *
+ *
* @throws IOException when errors occur reading or writing to/from the
* connection
* @throws HttpException when a recoverable error occurs
*/
- protected void addProxyAuthorizationRequestHeader(HttpState state,
+ protected void addProxyAuthorizationRequestHeader(HttpState state,
HttpConnection conn)
throws IOException, HttpException {
log.trace("enter HttpMethodBase.addProxyAuthorizationRequestHeader("
@@ -1281,25 +1281,25 @@
/**
* Populates the request headers map to with additional {@link Header
* headers} to be submitted to the given {@link HttpConnection}.
- *
+ *
* <p>
* This implementation adds <tt>User-Agent</tt>, <tt>Host</tt>,
* <tt>Cookie</tt>, <tt>Content-Length</tt>, <tt>Transfer-Encoding</tt>,
* and <tt>Authorization</tt> headers, when appropriate.
* </p>
- *
+ *
* <p>
* Subclasses may want to override this method to to add additional
* headers, and may choose to invoke this implementation (via
* <tt>super</tt>) to add the "standard" headers.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} the headers will eventually be
* written to
* @throws IOException when an error occurs writing the request
* @throws HttpException when a HTTP protocol error occurs
- *
+ *
* @see #writeRequestHeaders
*/
protected void addRequestHeaders(HttpState state, HttpConnection conn)
@@ -1318,14 +1318,14 @@
/**
* Adds a default <tt>User-Agent</tt> request header, as long as no
* <tt>User-Agent</tt> request header already exists.
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} the headers will eventually be
* written to
* @throws IOException when an error occurs writing the request
* @throws HttpException when a HTTP protocol error occurs
*/
- protected void addUserAgentRequestHeader(HttpState state,
+ protected void addUserAgentRequestHeader(HttpState state,
HttpConnection conn)
throws IOException, HttpException {
log.trace("enter HttpMethodBase.addUserAgentRequestHeaders(HttpState, "
@@ -1338,8 +1338,8 @@
/**
* Throws an {@link IllegalStateException} if used but not recycled.
- *
- * @throws IllegalStateException if the method has been used and not
+ *
+ * @throws IllegalStateException if the method has been used and not
* recycled
*/
protected void checkNotUsed() throws IllegalStateException {
@@ -1350,7 +1350,7 @@
/**
* Throws an {@link IllegalStateException} if not used since last recycle.
- *
+ *
* @throws IllegalStateException if not used
*/
protected void checkUsed() throws IllegalStateException {
@@ -1363,16 +1363,16 @@
/**
* Generate an HTTP/S request line according to the specified attributes.
- *
+ *
* @param connection the connection the request will be sent to
* @param name the method name generate a request for
* @param requestPath the path string for the request
* @param query the query string for the request
* @param protocol the protocol to use (e.g. HTTP/1.0)
- *
+ *
* @return a line to send to the server that will fulfil the request
*/
- protected static String generateRequestLine(HttpConnection connection,
+ protected static String generateRequestLine(HttpConnection connection,
String name, String requestPath, String query, String protocol) {
log.trace("enter HttpMethodBase.generateRequestLine(HttpConnection, "
+ "String, String, String, String)");
@@ -1417,18 +1417,18 @@
/**
* When this method is invoked, {@link #readResponseBody
* readResponseBody(HttpState,HttpConnection)} will have been invoked.
- *
+ *
* <p>
* This implementation does nothing.
* </p>
- *
+ *
* <p>
* Subclasses may want to override this method.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
- *
+ *
* @see #readResponse
* @see #readResponseBody
*/
@@ -1440,26 +1440,26 @@
* populated with the response headers (in other words, {@link
* #readResponseHeaders readResponseHeaders(HttpState,HttpConnection)}
* will have been invoked).
- *
+ *
* <p>
* This implementation will handle the <tt>Set-Cookie</tt> and
* <tt>Set-Cookie2</tt> headers, if any, adding the relevant cookies to
* the given {@link HttpState}.
* </p>
- *
+ *
* <p>
* Subclasses may want to override this method to specially process
* additional headers, and/or invoke this method (via <tt>super</tt>) to
* process the <tt>Set-Cookie</tt> and <tt>Set-Cookie2</tt> headers.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
- *
+ *
* @see #readResponse
* @see #readResponseHeaders
*/
- protected void processResponseHeaders(HttpState state,
+ protected void processResponseHeaders(HttpState state,
HttpConnection conn) {
log.trace("enter HttpMethodBase.processResponseHeaders(HttpState, "
+ "HttpConnection)");
@@ -1473,8 +1473,8 @@
if (setCookieHeader != null) {
try {
- Cookie[] cookies = Cookie.parse(conn.getHost(), conn.getPort(),
- getPath(), conn.isSecure(),
+ Cookie[] cookies = Cookie.parse(conn.getHost(), conn.getPort(),
+ getPath(), conn.isSecure(),
setCookieHeader);
state.addCookies(cookies);
} catch (HttpException e) {
@@ -1490,15 +1490,15 @@
* {@link #getStatusText status text} values will have been set (in other
* words, {@link #readStatusLine readStatusLine(HttpState,HttpConnection}
* will have been invoked).
- *
+ *
* <p>
* Subclasses may want to override this method to respond to these value.
* This implementation does nothing.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
- *
+ *
* @see #readResponse
* @see #readStatusLine
*/
@@ -1507,10 +1507,10 @@
/**
* Reads the response from the given {@link HttpConnection}.
- *
+ *
* <p>
* The response is written according to the following logic:
- *
+ *
* <ol>
* <li>
* {@link #readStatusLine readStatusLine(HttpState,HttpConnection)} is
@@ -1541,12 +1541,12 @@
* method to respond to the body if desired.
* </li>
* </ol>
- *
+ *
* Subclasses may want to override one or more of the above methods to to
* customize the processing. (Or they may choose to override this method
* if dramatically different processing is required.)
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
* @throws IOException when i/o errors occur reading the response
@@ -1566,23 +1566,23 @@
/**
* Read the response body from the given {@link HttpConnection}.
- *
+ *
* <p>
* The current implementation simply consumes the expected response body
* (according to the values of the <tt>Content-Length</tt> and
* <tt>Transfer-Encoding</tt> headers, if any).
* </p>
- *
+ *
* <p>
* Subclasses may want to override this method to to customize the
* processing.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
* @throws IOException when i/o errors occur reading the response
* @throws HttpException when a protocol error occurs or state is invalid
- *
+ *
* @see #readResponse
* @see #processResponseBody
*/
@@ -1610,7 +1610,7 @@
* @param conn the {@link HttpConnection} to read the response from
* @return InputStream to read the response body from
*/
- private InputStream _readResponseBody(HttpState state, HttpConnection conn)
+ private InputStream _readResponseBody(HttpState state, HttpConnection conn)
throws IOException {
log.trace("enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)");
@@ -1629,12 +1629,12 @@
result = new ChunkedInputStream(is, this);
}
} else if (null != lengthHeader) {
-
+
// we're using this just in case the content length is duplicated
// i.e. '57, 57'
- HeaderElement[] lengthElements = lengthHeader.getValues();
+ HeaderElement[] lengthElements = lengthHeader.getValues();
String lengthValue = null;
-
+
if ( lengthElements.length > 1 ) {
// looks like the content length header was duplicated. if so
// they won't be key=value pairs so we just want to get
@@ -1647,18 +1647,18 @@
try {
int expectedLength = Integer.parseInt(lengthValue);
- // FIXME: what if the content length is 0, perhaps we should
- // just return an empty stream in that case
+ // FIXME: what if the content length is 0, perhaps we should
+ // just return an empty stream in that case
result = new ContentLengthInputStream(is, expectedLength);
} catch(NumberFormatException e) {
- throw new HttpException(
- "Unable to parse server response content length: '"
+ throw new HttpException(
+ "Unable to parse server response content length: '"
+ lengthValue + "'"
);
-
+
}
-
- } else if(canResponseHaveBody(statusLine.getStatusCode())
+
+ } else if(canResponseHaveBody(statusLine.getStatusCode())
&& !getName().equals(ConnectMethod.NAME)){
result = is;
}
@@ -1676,24 +1676,24 @@
/**
* Read response headers from the given {@link HttpConnection}, populating
* the response headers map.
- *
+ *
* <p>
* Subclasses may want to override this method to to customize the
* processing.
* </p>
- *
+ *
* <p>
* "It must be possible to combine the multiple header fields into one
* "field-name: field-value" pair, without changing the semantics of the
* message, by appending each subsequent field-value to the first, each
* separated by a comma." - HTTP/1.0 (4.3)
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
* @throws IOException when i/o errors occur reading the response
* @throws HttpException when a protocol error occurs or state is invalid
- *
+ *
* @see #readResponse
* @see #processResponseHeaders
*/
@@ -1757,22 +1757,22 @@
* Read the status line from the given {@link HttpConnection}, setting my
* {@link #getStatusCode status code} and {@link #getStatusText status
* text}.
- *
+ *
* <p>
* Subclasses may want to override this method to to customize the
* processing.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to read the response from
- *
+ *
* @throws IOException when errors occur reading the status line
* @throws HttpException If there is no status line, the protocol is not
* recognised, if we are unable to parse the status code from the line,
* or there was no status text
* @throws HttpRecoverableException when the status line is null and the
* request should be retried
- *
+ *
* @see StatusLine
*/
protected void readStatusLine(HttpState state, HttpConnection conn)
@@ -1815,11 +1815,11 @@
* <p>
* Writes my request to the given {@link HttpConnection}.
* </p>
- *
+ *
* <p>
* The request is written according to the following logic:
* </p>
- *
+ *
* <ol>
* <li>
* {@link #writeRequestLine writeRequestLine(HttpState, HttpConnection)} is
@@ -1837,13 +1837,13 @@
* invoked to write the body part of the request.
* </li>
* </ol>
- *
+ *
* <p>
* Subclasses may want to override one or more of the above methods to to
* customize the processing. (Or they may choose to override this method
* if dramatically different processing is required.)
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to write the request to
* @throws IOException when i/o errors occur reading the response
@@ -1861,25 +1861,25 @@
/**
* Write the request body to the given {@link HttpConnection}.
- *
+ *
* <p>
* If an expectation is required, this method should ensure that it has
* been sent by checking the {@link #getStatusCode status code}.
* </p>
- *
+ *
* <p>
* This method should return <tt>true</tt> if the request body was actually
* sent (or is empty), or <tt>false</tt> if it could not be sent for some
* reason (for example, expectation required but not present).
* </p>
- *
+ *
* <p>
* This implementation writes nothing and returns <tt>true</tt>.
* </p>
- *
+ *
* @param state the client state
* @param conn the connection to write to
- *
+ *
* @return <tt>true</tt>
* @throws IOException when i/o errors occur reading the response
* @throws HttpException when a protocol error occurs or state is invalid
@@ -1891,23 +1891,23 @@
/**
* Writes the request headers to the given {@link HttpConnection}.
- *
+ *
* <p>
* This implementation invokes {@link #addRequestHeaders
* addRequestHeaders(HttpState,HttpConnection)}, and then writes each
* header to the request stream.
* </p>
- *
+ *
* <p>
* Subclasses may want to override this method to to customize the
* processing.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to write to
* @throws IOException when i/o errors occur reading the response
* @throws HttpException when a protocol error occurs or state is invalid
- *
+ *
* @see #addRequestHeaders
* @see #getRequestHeaders
*/
@@ -1924,17 +1924,17 @@
/**
* Writes the "request line" to the given {@link HttpConnection}.
- *
+ *
* <p>
* Subclasses may want to override this method to to customize the
* processing.
* </p>
- *
+ *
* @param state the client state
* @param conn the {@link HttpConnection} to write to
* @throws IOException when i/o errors occur reading the response
* @throws HttpException when a protocol error occurs or state is invalid
- *
+ *
* @see #generateRequestLine
*/
protected void writeRequestLine(HttpState state, HttpConnection conn)
@@ -1957,9 +1957,9 @@
/**
* Get the HTTP version.
- *
+ *
* @return HTTP/1.1 if http11, HTTP/1.0 otherwise
- *
+ *
* @since 2.0
*/
private String getHttpVersion() {
@@ -1968,9 +1968,9 @@
/**
* Determines if the provided value is a valid IPv4 internet address.
- *
+ *
* @param value - value to check
- *
+ *
* @return boolean - true if value is valid, otherwise false
*/
private static boolean isIpAddress(String value) {
@@ -2008,12 +2008,12 @@
* "It must be possible to combine the multiple header fields into one
* "field-name: field-value" pair, without changing the semantics of the
* message, by appending each subsequent field-value to the first, each
- * separated by a comma."
+ * separated by a comma."
* //TODO: This method is trying to make up for deficiencies in Header.
- *
+ *
* @param existingHeader the current header
* @param value DOCUMENT ME!
- *
+ *
* @return DOCUMENT ME!
*/
private String getNewHeaderValue(Header existingHeader, String value) {
@@ -2030,9 +2030,9 @@
/**
* Sets the specified response header.
- *
+ *
* @param header the header to set.
- *
+ *
* @since 2.0
*/
private void setResponseHeader(Header header) {
@@ -2045,9 +2045,9 @@
/**
* Per RFC 2616 section 4.3, some response can never contain a message
* body.
- *
+ *
* @param status - the HTTP status code
- *
+ *
* @return true if the message may contain a body, false if it can not
* contain a message body
*/
@@ -2066,27 +2066,27 @@
/**
* Generates a key used for idenifying visited URLs.
- *
+ *
* @param conn DOCUMENT ME!
- *
+ *
* @return DOCUMENT ME!
*/
private String generateVisitedKey(HttpConnection conn) {
return conn.getHost() + ":" + conn.getPort() + "|"
- + generateRequestLine(conn, getName(), getPath(),
+ + generateRequestLine(conn, getName(), getPath(),
getQueryString(), getHttpVersion());
}
/**
* process a response that requires authentication
- *
+ *
* @param state the current state
* @param connection the connection for communication
- *
+ *
* @return true if the request has completed process, false if more
* attempts are needed
*/
- private boolean processAuthenticationResponse(HttpState state,
+ private boolean processAuthenticationResponse(HttpState state,
HttpConnection connection) {
log.trace("enter HttpMethodBase.processAuthenticationResponse("
+ "HttpState, HttpConnection)");
@@ -2129,7 +2129,7 @@
break;
case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
removeRequestHeader(Authenticator.PROXY_AUTH_RESP);
- authenticated = Authenticator.authenticateProxy(this,
+ authenticated = Authenticator.authenticateProxy(this,
state);
break;
}
@@ -2162,19 +2162,19 @@
* be retried {@link #maxRetries} times if the operation fails with a
* HttpRecoverableException. The write will only be attempted if the read
* has succeeded.
- *
+ *
* <p>
* The <i>used</i> is set to true if the write succeeds.
* </p>
- *
+ *
* @param state the current state
* @param connection the connection for communication
- *
+ *
* @throws HttpException when errors occur as part of the HTTP protocol
* conversation
* @throws IOException when an I/O error occurs communicating with the
* server
- *
+ *
* @see writeRequest(HttpState,HttpConnection)
* @see readResponse(HttpState,HttpConnection)
*/
@@ -2232,16 +2232,16 @@
/**
* On a {@link HttpStatus#SC_CONTINUE continue}, if there are more request
* bytes to be sent, write them to the connection
- *
+ *
* @param state the current state
* @param connection the connection for communication
- *
+ *
* @throws HttpException when errors occur as part of the HTTP protocol
* conversation
* @throws IOException when an I/O error occurs communicating with the
* server
*/
- private void writeRemainingRequestBody(HttpState state,
+ private void writeRemainingRequestBody(HttpState state,
HttpConnection connection)
throws HttpException, IOException {
log.trace("enter writeRemainingRequestBody(HttpState, HttpConnection)");
1.6 +5 -4 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestLocalHost.java
Index: TestLocalHost.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestLocalHost.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TestLocalHost.java 3 Dec 2002 05:46:16 -0000 1.5
+++ TestLocalHost.java 3 Dec 2002 15:28:18 -0000 1.6
@@ -85,6 +85,7 @@
suite.addTest(TestMethodsLocalHost.suite());
suite.addTest(TestGetMethodLocal.suite());
suite.addTest(TestTraceMethodLocal.suite());
+ suite.addTest(TestHttpConnectionManager.suite());
suite.addTest(TestWebapp.suite());
return suite;
}
1.16 +4 -5 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestNoHost.java
Index: TestNoHost.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestNoHost.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- TestNoHost.java 31 Oct 2002 07:45:35 -0000 1.15
+++ TestNoHost.java 3 Dec 2002 15:28:18 -0000 1.16
@@ -91,7 +91,6 @@
suite.addTest(TestAuthenticator.suite());
suite.addTest(TestHttpClientNoHost.suite());
suite.addTest(TestHttpUrlMethod.suite());
- suite.addTest(TestHttpConnectionManager.suite());
suite.addTest(TestURIUtil.suite());
suite.addTest(TestURIUtil2.suite());
suite.addTest(TestMethodsNoHost.suite());
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Sorry
Posted by Ortwin Glück <or...@nose.ch>.
Not Eric's but Michael Becke's contribution.
ps. Damn whitespace. Sorry for CVS churn.
oglueck@apache.org wrote:
> Contributed by: Eric Johnson
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>