rwaldhoff 01/08/23 17:23:48 Modified: httpclient/src/java/org/apache/commons/httpclient Tag: rlwrefactoring HttpMethod.java HttpMethodBase.java Log: adding addRequestHeader methods Revision Changes Path No revision No revision 1.5.2.10 +20 -3 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethod.java Index: HttpMethod.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethod.java,v retrieving revision 1.5.2.9 retrieving revision 1.5.2.10 diff -u -r1.5.2.9 -r1.5.2.10 --- HttpMethod.java 2001/08/20 17:21:19 1.5.2.9 +++ HttpMethod.java 2001/08/24 00:23:48 1.5.2.10 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethod.java,v 1.5.2.9 2001/08/20 17:21:19 rwaldhoff Exp $ - * $Revision: 1.5.2.9 $ - * $Date: 2001/08/20 17:21:19 $ + * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethod.java,v 1.5.2.10 2001/08/24 00:23:48 rwaldhoff Exp $ + * $Revision: 1.5.2.10 $ + * $Date: 2001/08/24 00:23:48 $ * ==================================================================== * Copyright (C) The Apache Software Foundation. All rights reserved. * @@ -71,6 +71,23 @@ * @param header the header */ public void setRequestHeader(Header header); + + /** + * Adds 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 + */ + public void addRequestHeader(String headerName, String headerValue); + + /** + * Adds the specified request header, NOT overwriting any + * previous value. + * Note that header-name matching is case insensitive. + * @param header the header + */ + public void addRequestHeader(Header header); /** * Get the request header associated with the given name. 1.10.2.23 +57 -4 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.10.2.22 retrieving revision 1.10.2.23 diff -u -r1.10.2.22 -r1.10.2.23 --- HttpMethodBase.java 2001/08/23 21:45:33 1.10.2.22 +++ HttpMethodBase.java 2001/08/24 00:23:48 1.10.2.23 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v 1.10.2.22 2001/08/23 21:45:33 rwaldhoff Exp $ - * $Revision: 1.10.2.22 $ - * $Date: 2001/08/23 21:45:33 $ + * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v 1.10.2.23 2001/08/24 00:23:48 rwaldhoff Exp $ + * $Revision: 1.10.2.23 $ + * $Date: 2001/08/24 00:23:48 $ * ==================================================================== * Copyright (C) The Apache Software Foundation. All rights reserved. * @@ -61,7 +61,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a> * @author Rodney Waldhoff - * @version $Revision: 1.10.2.22 $ + * @version $Revision: 1.10.2.23 $ */ public abstract class HttpMethodBase implements HttpMethod { @@ -144,6 +144,53 @@ } /** + * 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 + */ + public void addRequestHeader(String headerName, String headerValue) { + // "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) + Header header = (Header)(requestHeaders.get(headerName.toLowerCase())); + if(null == header) { + header = new Header(headerName, headerValue); + } else { + header.setValue( (null == header.getValue() ? "" : header.getValue()) + + ", " + + (null == headerValue ? "" : headerValue)); + } + requestHeaders.put(headerName.toLowerCase(),header); + } + + /** + * Add the specified request header, NOT overwriting any + * previous value. + * Note that header-name matching is case insensitive. + * @param header the header + */ + public void addRequestHeader(Header header) { + // "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) + Header orig = (Header)(requestHeaders.get(header.getName().toLowerCase())); + if(null == orig) { + orig = header; + } else { + orig.setValue( (null == orig.getValue() ? "" : orig.getValue()) + + ", " + + (null == header.getValue() ? "" : header.getValue())); + } + requestHeaders.put(orig.getName().toLowerCase(),orig); + } + + /** * Get the request header associated with the given name. * Note that header-name matching is case insensitive. * @param headerName the header name @@ -818,6 +865,12 @@ * @param conn the {@link HttpConnection} to read the response from */ protected void readResponseHeaders(State state, HttpConnection conn) throws IOException, HttpException { + // "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) + log.debug("HttpMethodBase.readResponseHeaders(State,HttpConnection)"); responseHeaders.clear();