olegk 2003/03/12 14:13:16 Modified: httpclient/src/java/org/apache/commons/httpclient/methods EntityEnclosingMethod.java MultipartPostMethod.java httpclient/src/test/org/apache/commons/httpclient TestLocalHostBase.java Log: Changelog: - 'Expect: 100-continue' functions refactored into an abstract ExpectContinueMethod class. - 'Expect: 100-continue' handshake is not used when sending requests via a proxy Contributed by Oleg Kalnichevski Revision Changes Path 1.13 +17 -58 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/EntityEnclosingMethod.java Index: EntityEnclosingMethod.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/EntityEnclosingMethod.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- EntityEnclosingMethod.java 6 Mar 2003 07:49:03 -0000 1.12 +++ EntityEnclosingMethod.java 12 Mar 2003 22:13:15 -0000 1.13 @@ -92,7 +92,7 @@ * @since 2.0beta1 * @version $Revision$ */ -public abstract class EntityEnclosingMethod extends GetMethod { +public abstract class EntityEnclosingMethod extends ExpectContinueMethod { // ----------------------------------------- Static variables/initializers @@ -125,10 +125,6 @@ */ private int requestContentLength = CONTENT_LENGTH_AUTO; - /** This flag specifies whether "expect: 100-continue" handshake is - * to be used prior to sending the requesst body */ - private boolean useExpectHeader = true; - // ----------------------------------------------------------- Constructors /** @@ -182,6 +178,18 @@ setFollowRedirects(false); } + /** + * Returns <tt>true</tt> if there is a request body to be sent. + * 'Expect: 100-continue' handshake may not be used if request + * body is not present + * + * @return boolean + * + * @since 2.0beta1 + */ + protected boolean hasRequestContent() { + return (this.requestBodyStream != null) || (this.buffer != null); + } /** * Entity enclosing requests cannot be redirected without user intervention @@ -212,23 +220,6 @@ super.setFollowRedirects(false); } - - /** - * Returns the useExpectHeader. - * @return boolean - */ - public boolean getUseExpectHeader() { - return this.useExpectHeader; - } - - /** - * Sets the useExpectHeader. - * @param value The useExpectHeader to set - */ - public void setUseExpectHeader(boolean value) { - this.useExpectHeader = value; - } - /** * Sets length information about the request body. * @@ -342,38 +333,6 @@ return buffer.toString(); } - - /** - * Set the <tt>Expect</tt> header if it has not already been set, - * in addition to the "standard" set of headers. - * - * @param state the client state - * @param conn the connection to write to - * - * @throws HttpException when a protocol error occurs or state is invalid - * @throws IOException when i/o errors occur reading the response - */ - protected void addRequestHeaders(HttpState state, HttpConnection conn) - throws IOException, HttpException { - LOG.trace("enter EntityEnclosingMethod.addRequestHeaders(HttpState, HttpConnection)"); - - super.addRequestHeaders(state, conn); - // If the request is being retried, the header may already be present - boolean headerPresent = (getRequestHeader("Expect") != null); - // See if the expect header should be sent - // = HTTP/1.1 or higher - // = request body present - if (getUseExpectHeader() && isHttp11() - && ((this.requestBodyStream != null) || this.buffer != null)) { - if (!headerPresent) { - setRequestHeader("Expect", "100-continue"); - } - } else { - if (headerPresent) { - removeRequestHeader("Expect"); - } - } - } /** * Override method of [EMAIL PROTECTED] org.apache.commons.httpclient.HttpMethodBase} 1.14 +15 -35 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java Index: MultipartPostMethod.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/MultipartPostMethod.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- MultipartPostMethod.java 6 Mar 2003 07:49:03 -0000 1.13 +++ MultipartPostMethod.java 12 Mar 2003 22:13:15 -0000 1.14 @@ -93,7 +93,7 @@ * * @since 2.0 */ -public class MultipartPostMethod extends GetMethod { +public class MultipartPostMethod extends ExpectContinueMethod { /** The Content-Type for multipart/form-data. */ public static final String MULTIPART_FORM_CONTENT_TYPE = @@ -105,10 +105,6 @@ /** The parameters for this method */ private final List parameters = new ArrayList(); - /** This flag specifies whether "expect: 100-continue" handshake is - * to be used prior to sending the request body */ - private boolean useExpectHeader = true; - /** * No-arg constructor. */ @@ -147,27 +143,22 @@ } /** - * Returns <tt>"POST"</tt>. - * @return <tt>"POST"</tt> - */ - public String getName() { - return "POST"; - } - - /** - * Returns the useExpectHeader. - * @return boolean + * Returns <tt>true</tt> + * + * @return <tt>true</tt> + * + * @since 2.0beta1 */ - public boolean getUseExpectHeader() { - return this.useExpectHeader; + protected boolean hasRequestContent() { + return true; } /** - * Sets the useExpectHeader. - * @param value The useExpectHeader to set + * Returns <tt>"POST"</tt>. + * @return <tt>"POST"</tt> */ - public void setUseExpectHeader(boolean value) { - this.useExpectHeader = value; + public String getName() { + return "POST"; } /** @@ -251,16 +242,6 @@ } setRequestHeader("Content-Type", buffer.toString()); } - boolean headerPresent = (getRequestHeader("Expect") != null); - if (getUseExpectHeader() && isHttp11()) { - if (!headerPresent) { - setRequestHeader("Expect", "100-continue"); - } - } else { - if (headerPresent) { - removeRequestHeader("Expect"); - } - } } /** @@ -314,5 +295,4 @@ super.recycle(); parameters.clear(); } - } 1.4 +16 -3 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestLocalHostBase.java Index: TestLocalHostBase.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestLocalHostBase.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TestLocalHostBase.java 5 Mar 2003 04:02:56 -0000 1.3 +++ TestLocalHostBase.java 12 Mar 2003 22:13:15 -0000 1.4 @@ -77,6 +77,8 @@ ); private final String host = System.getProperty("httpclient.test.localHost","localhost"); private final int port; + private final String proxyHost = System.getProperty("httpclient.test.proxy.host"); + private final int proxyPort; /** * Constructor for TestLocalHostBase. @@ -92,6 +94,14 @@ tempPort = 8080; } port = tempPort; + String proxyPortString = System.getProperty("httpclient.test.proxy.port","3128"); + int tempProxyPort = 3128; + try { + tempProxyPort = Integer.parseInt(proxyPortString); + } catch(Exception e) { + tempProxyPort = 3128; + } + proxyPort = tempProxyPort; } /** @@ -123,6 +133,9 @@ } client.getHostConfiguration().setHost(host, port, protocol); + if (proxyHost != null) { + client.getHostConfiguration().setProxy(proxyHost, proxyPort); + } return client; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]