olegk 2004/01/06 12:08:56
Modified: httpclient/src/java/org/apache/commons/httpclient
MultiThreadedHttpConnectionManager.java URI.java
httpclient/src/java/org/apache/commons/httpclient/auth
AuthScheme.java BasicScheme.java DigestScheme.java
NTLM.java NTLMScheme.java
httpclient/src/java/org/apache/commons/httpclient/util
EncodingUtil.java URIUtil.java
httpclient/src/test/org/apache/commons/httpclient
NoncompliantPostMethod.java TestAuthenticator.java
TestBadContentLength.java
TestHttpConnectionManager.java
TestMethodsRedirectNoHost.java TestNoHost.java
httpclient/src/test/org/apache/commons/httpclient/server
ProxyAuthRequestHandler.java
Removed: httpclient/src/java/org/apache/commons/httpclient/util
Base64.java
httpclient/src/test/org/apache/commons/httpclient
TestBase64.java
Log:
PR #16881 (migrate to commons-codec Base64)
HttpClient made dependent on Commons-codec to perform Base64 and URL
encoding/decoding
Contributed by Oleg Kalnichevski
Reviewed By Michael Becke
Revision Changes Path
1.30 +9 -3
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.java
Index: MultiThreadedHttpConnectionManager.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- MultiThreadedHttpConnectionManager.java 11 Dec 2003 01:19:32 -0000 1.29
+++ MultiThreadedHttpConnectionManager.java 6 Jan 2004 20:08:56 -0000 1.30
@@ -1114,6 +1114,9 @@
}
}
+ /**
+ * @deprecated
+ */
public void print(String data)
throws IOException, IllegalStateException, HttpRecoverableException {
if (hasConnection()) {
@@ -1132,6 +1135,9 @@
}
}
+ /**
+ * @deprecated
+ */
public void printLine(String data)
throws IOException, IllegalStateException, HttpRecoverableException {
if (hasConnection()) {
1.43 +58 -72
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/URI.java
Index: URI.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/URI.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- URI.java 11 Oct 2003 19:46:51 -0000 1.42
+++ URI.java 6 Jan 2004 20:08:56 -0000 1.43
@@ -67,11 +67,14 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.BitSet;
import java.util.Hashtable;
+import org.apache.commons.codec.DecoderException;
+import org.apache.commons.codec.net.URLCodec;
+import org.apache.commons.httpclient.util.EncodingUtil;
+
/**
* The interface for the URI(Uniform Resource Identifiers) version of RFC 2396.
* This class has the purpose of supportting of parsing a URI reference to
@@ -1698,43 +1701,19 @@
* @return URI character sequence
* @throws URIException null component or unsupported character encoding
*/
+
protected static char[] encode(String original, BitSet allowed,
String charset) throws URIException {
-
- // encode original to uri characters.
if (original == null) {
- throw new URIException(URIException.PARSING, "null");
+ throw new IllegalArgumentException("Original string may not be null");
}
- // escape octet to uri characters.
if (allowed == null) {
- throw new URIException(URIException.PARSING,
- "null allowed characters");
- }
- byte[] octets;
- try {
- octets = original.getBytes(charset);
- } catch (UnsupportedEncodingException error) {
- throw new URIException(URIException.UNSUPPORTED_ENCODING, charset);
- }
- StringBuffer buf = new StringBuffer(octets.length);
- for (int i = 0; i < octets.length; i++) {
- char c = (char) octets[i];
- if (allowed.get(c)) {
- buf.append(c);
- } else {
- buf.append('%');
- byte b = octets[i]; // use the original byte value
- char hexadecimal = Character.forDigit((b >> 4) & 0xF, 16);
- buf.append(Character.toUpperCase(hexadecimal)); // high
- hexadecimal = Character.forDigit(b & 0xF, 16);
- buf.append(Character.toUpperCase(hexadecimal)); // low
- }
+ throw new IllegalArgumentException("Allowed bitset may not be null");
}
-
- return buf.toString().toCharArray();
+ byte[] rawdata = URLCodec.encodeUrl(allowed,
EncodingUtil.getBytes(original, charset));
+ return HttpConstants.getAsciiString(rawdata).toCharArray();
}
-
/**
* Decodes URI encoded string.
*
@@ -1765,50 +1744,57 @@
* @throws URIException incomplete trailing escape pattern or unsupported
* character encoding
*/
- protected static String decode(char[] component, String charset)
+ protected static String decode(char[] component, String charset)
throws URIException {
-
- // unescape uri characters to octets
- if (component == null) {
- return null;
+ if (component == null) {
+ throw new IllegalArgumentException("Component array of chars may not be
null");
}
+ return decode(new String(component), charset);
+ }
- byte[] octets;
- try {
- octets = new String(component).getBytes(charset);
- } catch (UnsupportedEncodingException error) {
- throw new URIException(URIException.UNSUPPORTED_ENCODING,
- "not supported " + charset + " encoding");
- }
- int length = octets.length;
- int oi = 0; // output index
- for (int ii = 0; ii < length; oi++) {
- byte aByte = (byte) octets[ii++];
- if (aByte == '%' && ii + 2 <= length) {
- byte high = (byte) Character.digit((char) octets[ii++], 16);
- byte low = (byte) Character.digit((char) octets[ii++], 16);
- if (high == -1 || low == -1) {
- throw new URIException(URIException.ESCAPING,
- "incomplete trailing escape pattern");
-
- }
- aByte = (byte) ((high << 4) + low);
- }
- octets[oi] = (byte) aByte;
+ /**
+ * Decodes URI encoded string.
+ *
+ * This is a two mapping, one from URI characters to octets, and
+ * subsequently a second from octets to original characters:
+ * <p><blockquote><pre>
+ * URI character sequence->octet sequence->original character sequence
+ * </pre></blockquote><p>
+ *
+ * A URI must be separated into its components before the escaped
+ * characters within those components can be allowedly decoded.
+ * <p>
+ * Notice that there is a chance that URI characters that are non UTF-8
+ * may be parsed as valid UTF-8. A recent non-scientific analysis found
+ * that EUC encoded Japanese words had a 2.7% false reading; SJIS had a
+ * 0.0005% false reading; other encoding such as ASCII or KOI-8 have a 0%
+ * false reading.
+ * <p>
+ * The percent "%" character always has the reserved purpose of being
+ * the escape indicator, it must be escaped as "%25" in order to be used
+ * as data within a URI.
+ * <p>
+ * The unescape method is internally performed within this method.
+ *
+ * @param component the URI character sequence
+ * @param charset the protocol charset
+ * @return original character sequence
+ * @throws URIException incomplete trailing escape pattern or unsupported
+ * character encoding
+ */
+ protected static String decode(String component, String charset)
+ throws URIException {
+ if (component == null) {
+ throw new IllegalArgumentException("Component array of chars may not be
null");
}
-
- String result;
- try {
- result = new String(octets, 0, oi, charset);
- } catch (UnsupportedEncodingException error) {
- throw new URIException(URIException.UNSUPPORTED_ENCODING,
- "not supported " + charset + " encoding");
+ byte[] rawdata = null;
+ try {
+ rawdata = URLCodec.decodeUrl(HttpConstants.getAsciiBytes(component));
+ } catch (DecoderException e) {
+ throw new URIException(e.getMessage());
}
-
- return result;
+ return HttpConstants.getContentString(rawdata, charset);
}
-
-
/**
* Pre-validate the unescaped URI string within a specific component.
*
1.7 +4 -4
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/AuthScheme.java
Index: AuthScheme.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/AuthScheme.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AuthScheme.java 11 Dec 2003 01:19:32 -0000 1.6
+++ AuthScheme.java 6 Jan 2004 20:08:56 -0000 1.7
@@ -165,7 +165,7 @@
boolean isConnectionBased();
/**
- * @deprecated Use [EMAIL PROTECTED] #authenticate(Credentials, String, String,
HttpMethodParams)}
+ * @deprecated Use [EMAIL PROTECTED] #authenticate(Credentials, HttpMethod)}
*
* Produces an authorization string for the given set of [EMAIL PROTECTED]
Credentials},
* method name and URI using the given authentication scheme in response to
1.10 +7 -5
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/BasicScheme.java
Index: BasicScheme.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/BasicScheme.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- BasicScheme.java 11 Dec 2003 01:19:32 -0000 1.9
+++ BasicScheme.java 6 Jan 2004 20:08:56 -0000 1.10
@@ -63,11 +63,11 @@
package org.apache.commons.httpclient.auth;
+import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpConstants;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.util.Base64;
import org.apache.commons.httpclient.util.EncodingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -138,6 +138,8 @@
* be generated due to an authentication failure
*
* @return a basic authorization string
+ *
+ * @deprecated Use [EMAIL PROTECTED] #authenticate(Credentials, HttpMethod)}
*/
public String authenticate(Credentials credentials, String method, String uri)
throws AuthenticationException {
@@ -233,7 +235,7 @@
buffer.append(credentials.getPassword());
return "Basic " + HttpConstants.getAsciiString(
- Base64.encode(EncodingUtil.getBytes(buffer.toString(), charset)));
+ Base64.encodeBase64(EncodingUtil.getBytes(buffer.toString(),
charset)));
}
}
1.14 +5 -3
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/DigestScheme.java
Index: DigestScheme.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/DigestScheme.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- DigestScheme.java 11 Dec 2003 01:19:32 -0000 1.13
+++ DigestScheme.java 6 Jan 2004 20:08:56 -0000 1.14
@@ -276,6 +276,8 @@
*
* @see org.apache.commons.httpclient.HttpMethod#getName()
* @see org.apache.commons.httpclient.HttpMethod#getPath()
+ *
+ * @deprecated Use [EMAIL PROTECTED] #authenticate(Credentials, HttpMethod)}
*/
public String authenticate(Credentials credentials, String method, String uri)
throws AuthenticationException {
1.6 +7 -7
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/NTLM.java
Index: NTLM.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/NTLM.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- NTLM.java 11 Dec 2003 01:19:32 -0000 1.5
+++ NTLM.java 6 Jan 2004 20:08:56 -0000 1.6
@@ -72,8 +72,8 @@
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
+import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.HttpConstants;
-import org.apache.commons.httpclient.util.Base64;
import org.apache.commons.httpclient.util.EncodingUtil;
/**
@@ -252,7 +252,7 @@
} else {
resp = currentResponse;
}
- return HttpConstants.getString(Base64.encode(resp));
+ return HttpConstants.getString(Base64.encodeBase64(resp));
}
/**
@@ -340,7 +340,7 @@
*/
private byte[] parseType2Message(String message) {
// Decode the message first.
- byte[] msg = Base64.decode(EncodingUtil.getBytes(message, DEFAULT_CHARSET));
+ byte[] msg = Base64.decodeBase64(EncodingUtil.getBytes(message,
DEFAULT_CHARSET));
byte[] nonce = new byte[8];
// The nonce is the 8 bytes starting from the byte in position 24.
for (int i = 0; i < 8; i++) {
1.14 +5 -3
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/NTLMScheme.java
Index: NTLMScheme.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/NTLMScheme.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- NTLMScheme.java 11 Dec 2003 01:19:32 -0000 1.13
+++ NTLMScheme.java 6 Jan 2004 20:08:56 -0000 1.14
@@ -273,6 +273,8 @@
* be generated due to an authentication failure
*
* @return an NTLM authorization string
+ *
+ * @deprecated Use [EMAIL PROTECTED] #authenticate(Credentials, HttpMethod)}
*/
public String authenticate(Credentials credentials, String method, String uri)
throws AuthenticationException {
1.3 +51 -49
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/EncodingUtil.java
Index: EncodingUtil.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/EncodingUtil.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- EncodingUtil.java 11 Dec 2003 01:19:33 -0000 1.2
+++ EncodingUtil.java 6 Jan 2004 20:08:56 -0000 1.3
@@ -63,10 +63,11 @@
package org.apache.commons.httpclient.util;
import java.io.UnsupportedEncodingException;
-import java.util.BitSet;
+import org.apache.commons.codec.net.URLCodec;
+import org.apache.commons.httpclient.HttpClientError;
+import org.apache.commons.httpclient.HttpConstants;
import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.URIException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -83,31 +84,44 @@
private static final Log LOG = LogFactory.getLog(EncodingUtil.class);
/**
- * BitSet of www-form-url safe characters.
+ * Form-urlencoding routine.
+ *
+ * The default encoding for all forms is `application/x-www-form-urlencoded'.
+ * A form data set is represented in this media type as follows:
+ *
+ * The form field names and values are escaped: space characters are replaced
+ * by `+', and then reserved characters are escaped as per [URL]; that is,
+ * non-alphanumeric characters are replaced by `%HH', a percent sign and two
+ * hexadecimal digits representing the ASCII code of the character. Line
breaks,
+ * as in multi-line text field values, are represented as CR LF pairs, i.e.
`%0D%0A'.
+ *
+ * <p>
+ * if the given charset is not supported, [EMAIL PROTECTED]
HttpConstants.DEFAULT_CONTENT_CHARSET default HTTP
+ * content encoding} is used instead.
+ * </p>
+ *
+ * @param pairs the values to be encoded
+ * @param charset the character set of pairs to be encoded
+ *
+ * @return the urlencoded pairs
+ *
+ * @since 2.0 final
*/
- private static final BitSet WWW_FORM_URL = new BitSet(256);
-
- // Static initializer for www_form_url
- static {
- // alpha characters
- for (int i = 'a'; i <= 'z'; i++) {
- WWW_FORM_URL.set(i);
- }
- for (int i = 'A'; i <= 'Z'; i++) {
- WWW_FORM_URL.set(i);
- }
- // numeric characters
- for (int i = '0'; i <= '9'; i++) {
- WWW_FORM_URL.set(i);
+ public static String formUrlEncode(NameValuePair[] pairs, String charset) {
+ try {
+ return doFormUrlEncode(pairs, charset);
+ } catch (UnsupportedEncodingException e) {
+ LOG.error("Encoding not supported: " + charset);
+ try {
+ return doFormUrlEncode(pairs,
HttpConstants.DEFAULT_CONTENT_CHARSET);
+ } catch (UnsupportedEncodingException fatal) {
+ // Should never happen. ISO-8859-1 must be supported on all JVMs
+ throw new HttpClientError("Encoding not supported: " +
+ HttpConstants.DEFAULT_CONTENT_CHARSET);
+ }
}
- // blank to be replaced with +
- WWW_FORM_URL.set(' ');
- WWW_FORM_URL.set('-');
- WWW_FORM_URL.set('_');
- WWW_FORM_URL.set('.');
- WWW_FORM_URL.set('*');
}
-
+
/**
* Form-urlencoding routine.
*
@@ -124,37 +138,25 @@
* @param charset the character set of pairs to be encoded
*
* @return the urlencoded pairs
+ * @throws UnsupportedEncodingException if charset is not supported
*
* @since 2.0 final
*/
- public static String formUrlEncode(NameValuePair[] pairs, String charset) {
-
+ private static String doFormUrlEncode(NameValuePair[] pairs, String charset)
+ throws UnsupportedEncodingException
+ {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < pairs.length; i++) {
- if (pairs[i].getName() != null) {
+ URLCodec codec = new URLCodec();
+ NameValuePair pair = pairs[i];
+ if (pair.getName() != null) {
if (i > 0) {
buf.append("&");
}
- String queryName = pairs[i].getName();
- try {
- queryName = URIUtil.encode(queryName, WWW_FORM_URL,
charset).replace(' ', '+');
- } catch (URIException urie) {
- LOG.error("Error encoding pair name: " + queryName, urie);
- }
- buf.append(queryName);
+ buf.append(codec.encode(pair.getName(), charset));
buf.append("=");
- if (pairs[i].getValue() != null) {
- String queryValue = pairs[i].getValue();
- try {
- queryValue = URIUtil.encode(
- queryValue,
- WWW_FORM_URL,
- charset
- ).replace(' ', '+');
- } catch (URIException urie) {
- LOG.error("Error encoding pair value: " + queryValue, urie);
- }
- buf.append(queryValue);
+ if (pair.getValue() != null) {
+ buf.append(codec.encode(pair.getValue(), charset));
}
}
}
1.23 +26 -15
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/URIUtil.java
Index: URIUtil.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/URIUtil.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- URIUtil.java 5 Jul 2003 22:31:21 -0000 1.22
+++ URIUtil.java 6 Jan 2004 20:08:56 -0000 1.23
@@ -64,6 +64,10 @@
package org.apache.commons.httpclient.util;
import java.util.BitSet;
+
+import org.apache.commons.codec.DecoderException;
+import org.apache.commons.codec.net.URLCodec;
+import org.apache.commons.httpclient.HttpConstants;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;
@@ -511,7 +515,8 @@
* @throws URIException if the default protocol charset is not supported
*
* @see URI#getDefaultProtocolCharset
- * @see Coder#encode
+ *
+ * @deprecated use org.apache.commons.codec.net.URLCodec
*/
public static String encode(String unescaped, BitSet allowed)
throws URIException {
@@ -528,15 +533,12 @@
* @param allowed allowed characters not to be escaped
* @param charset the charset
* @return the escaped string
- *
- * @throws URIException if the charset is not supported
- *
- * @see Coder#encode
*/
public static String encode(String unescaped, BitSet allowed,
String charset) throws URIException {
-
- return new String(Coder.encode(unescaped, allowed, charset));
+ byte[] rawdata = URLCodec.encodeUrl(allowed,
+ EncodingUtil.getBytes(unescaped, charset));
+ return HttpConstants.getAsciiString(rawdata);
}
@@ -547,16 +549,19 @@
* @param escaped a string
* @return the unescaped string
*
- * @throws URIException if the default protocol charset is not supported
+ * @throws URIException if the string cannot be decoded (invalid)
*
* @see URI#getDefaultProtocolCharset
- * @see Coder#decode
*/
public static String decode(String escaped) throws URIException {
- return Coder.decode(escaped.toCharArray(), URI.getDefaultProtocolCharset());
+ try {
+ byte[] rawdata =
URLCodec.decodeUrl(HttpConstants.getAsciiBytes(escaped));
+ return HttpConstants.getContentString(rawdata,
URI.getDefaultProtocolCharset());
+ } catch (DecoderException e) {
+ throw new URIException(e.getMessage());
+ }
}
-
/**
* Unescape and decode a given string regarded as an escaped string.
*
@@ -579,6 +584,8 @@
/**
* The basic and internal utility for URI escape and character encoding and
* decoding.
+ *
+ * @deprecated use org.apache.commons.codec.net.URLCodec
*/
protected static class Coder extends URI {
@@ -592,6 +599,8 @@
* @return the escaped and encoded string
*
* @throws URIException if the charset is not supported
+ *
+ * @deprecated use org.apache.commons.codec.net.URLCodec
*/
public static char[] encode(String unescapedComponent, BitSet allowed,
String charset)
throws URIException {
@@ -608,6 +617,8 @@
* @return the escaped and encoded string
*
* @throws URIException if the charset is not supported
+ *
+ * @deprecated use org.apache.commons.codec.net.URLCodec
*/
public static String decode(char[] escapedComponent, String charset)
throws URIException {
1.2 +1 -1
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/NoncompliantPostMethod.java
Index: NoncompliantPostMethod.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/NoncompliantPostMethod.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NoncompliantPostMethod.java 1 Feb 2003 16:10:48 -0000 1.1
+++ NoncompliantPostMethod.java 6 Jan 2004 20:08:56 -0000 1.2
@@ -99,7 +99,7 @@
Header header = headers[i];
// Write all the headers but "Expect"
if (!header.getName().equalsIgnoreCase("Expect") ) {
- conn.print(header.toExternalForm());
+ conn.print(header.toExternalForm(), "US-ASCII");
}
}
}
1.36 +28 -15
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestAuthenticator.java
Index: TestAuthenticator.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestAuthenticator.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- TestAuthenticator.java 10 Dec 2003 21:04:13 -0000 1.35
+++ TestAuthenticator.java 6 Jan 2004 20:08:56 -0000 1.36
@@ -62,13 +62,19 @@
package org.apache.commons.httpclient;
+import java.util.Map;
+
import junit.framework.Test;
import junit.framework.TestSuite;
-import java.util.Map;
-
-import org.apache.commons.httpclient.auth.*;
-import org.apache.commons.httpclient.util.Base64;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.httpclient.auth.AuthChallengeParser;
+import org.apache.commons.httpclient.auth.AuthScheme;
+import org.apache.commons.httpclient.auth.BasicScheme;
+import org.apache.commons.httpclient.auth.DigestScheme;
+import org.apache.commons.httpclient.auth.HttpAuthenticator;
+import org.apache.commons.httpclient.auth.MalformedChallengeException;
+import org.apache.commons.httpclient.auth.NTLMScheme;
/**
* Unit tests for [EMAIL PROTECTED] Authenticator}.
@@ -190,7 +196,8 @@
authscheme.processChallenge(challenge);
assertTrue(HttpAuthenticator.authenticate(authscheme, method, null, state));
assertTrue(null != method.getRequestHeader("Authorization"));
- String expected = "Basic " +
HttpConstants.getString(Base64.encode(HttpConstants.getBytes("username:password")));
+ String expected = "Basic " + HttpConstants.getString(
+ Base64.encodeBase64(HttpConstants.getBytes("username:password")));
assertEquals(expected,method.getRequestHeader("Authorization").getValue());
}
@@ -201,7 +208,8 @@
HttpMethod method = new SimpleHttpMethod(new
Header("WWW-Authenticate","Basic realm=\"realm1\""));
assertTrue(HttpAuthenticator.authenticateDefault(method, null, state));
assertTrue(null != method.getRequestHeader("Authorization"));
- String expected = "Basic " +
HttpConstants.getString(Base64.encode(HttpConstants.getBytes("username:password")));
+ String expected = "Basic " + HttpConstants.getString(
+ Base64.encodeBase64(HttpConstants.getBytes("username:password")));
assertEquals(expected,method.getRequestHeader("Authorization").getValue());
}
@@ -214,7 +222,8 @@
authscheme.processChallenge(challenge);
assertTrue(HttpAuthenticator.authenticate(authscheme, method, null, state));
assertTrue(null != method.getRequestHeader("Authorization"));
- String expected = "Basic " +
HttpConstants.getString(Base64.encode(HttpConstants.getBytes("username:password")));
+ String expected = "Basic " + HttpConstants.getString(
+ Base64.encodeBase64(HttpConstants.getBytes("username:password")));
assertEquals(expected,method.getRequestHeader("Authorization").getValue());
}
@@ -226,7 +235,8 @@
}
UsernamePasswordCredentials credentials = new
UsernamePasswordCredentials("dh", buffer.toString());
- assertEquals("Basic ZGg65C32Lfw=", BasicScheme.authenticate(credentials));
+ assertEquals("Basic ZGg65C32Lfw=",
+ BasicScheme.authenticate(credentials,
HttpConstants.DEFAULT_CONTENT_CHARSET));
}
public void testBasicAuthenticationWithMutlipleRealms() throws Exception {
@@ -243,14 +253,16 @@
HttpMethod method = new SimpleHttpMethod(new
Header("WWW-Authenticate",challenge1));
assertTrue(HttpAuthenticator.authenticate(authscheme1, method, null,
state));
assertTrue(null != method.getRequestHeader("Authorization"));
- String expected = "Basic " +
HttpConstants.getString(Base64.encode(HttpConstants.getBytes("username:password")));
+ String expected = "Basic " + HttpConstants.getString(
+ Base64.encodeBase64(HttpConstants.getBytes("username:password")));
assertEquals(expected,method.getRequestHeader("Authorization").getValue());
}
{
HttpMethod method = new SimpleHttpMethod(new Header("WWW-Authenticate",
challenge2));
assertTrue(HttpAuthenticator.authenticate(authscheme2, method, null,
state));
assertTrue(null != method.getRequestHeader("Authorization"));
- String expected = "Basic " +
HttpConstants.getString(Base64.encode(HttpConstants.getBytes("uname2:password2")));
+ String expected = "Basic " + HttpConstants.getString(
+ Base64.encodeBase64(HttpConstants.getBytes("uname2:password2")));
assertEquals(expected,method.getRequestHeader("Authorization").getValue());
}
}
@@ -270,7 +282,8 @@
assertTrue(HttpAuthenticator.authenticateDefault(method, null, state));
assertTrue(null != method.getRequestHeader("Authorization"));
- String expected = "Basic " +
HttpConstants.getString(Base64.encode(HttpConstants.getBytes("username:password")));
+ String expected = "Basic " + HttpConstants.getString(
+ Base64.encodeBase64(HttpConstants.getBytes("username:password")));
assertEquals(expected, method.getRequestHeader("Authorization").getValue());
}
1.3 +4 -5
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestBadContentLength.java
Index: TestBadContentLength.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestBadContentLength.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestBadContentLength.java 11 Dec 2003 22:54:19 -0000 1.2
+++ TestBadContentLength.java 6 Jan 2004 20:08:56 -0000 1.3
@@ -63,7 +63,6 @@
import java.io.IOException;
import java.io.InputStream;
-import java.net.ProtocolException;
import junit.framework.Test;
import junit.framework.TestSuite;
1.15 +9 -5
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestHttpConnectionManager.java
Index: TestHttpConnectionManager.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestHttpConnectionManager.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- TestHttpConnectionManager.java 19 Nov 2003 13:27:02 -0000 1.14
+++ TestHttpConnectionManager.java 6 Jan 2004 20:08:56 -0000 1.15
@@ -74,6 +74,7 @@
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.protocol.Protocol;
+import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
/**
@@ -124,7 +125,10 @@
client.getHostConfiguration().setHost(
"notARealHost",
1234,
- new Protocol("https", new FakeSecureProtocolSocketFactory(), 443)
+ new Protocol(
+ "https",
+ (ProtocolSocketFactory)new FakeSecureProtocolSocketFactory(),
+ 443)
);
GetMethod get = new GetMethod("/");
1.9 +11 -7
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestMethodsRedirectNoHost.java
Index: TestMethodsRedirectNoHost.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestMethodsRedirectNoHost.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TestMethodsRedirectNoHost.java 4 Sep 2003 02:12:13 -0000 1.8
+++ TestMethodsRedirectNoHost.java 6 Jan 2004 20:08:56 -0000 1.9
@@ -66,6 +66,7 @@
import junit.framework.TestSuite;
import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.params.HttpClientParams;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jeff Dever</a>
@@ -172,7 +173,8 @@
HttpMethod method = new SimpleHttpMethod("/oldfile");
method.setFollowRedirects(true);
- method.setStrictMode(false);
+ client.getParams().setBooleanParameter(
+ HttpClientParams.REJECT_RELATIVE_REDIRECT, false);
client.executeMethod(method);
Header locationHeader = method.getResponseHeader("Location");
assertEquals(200, method.getStatusCode());
@@ -187,7 +189,8 @@
HttpMethod method = new SimpleHttpMethod("/oldfile");
method.setFollowRedirects(true);
- method.setStrictMode(true);
+ client.getParams().setBooleanParameter(
+ HttpClientParams.REJECT_RELATIVE_REDIRECT, true);
method.execute(new HttpState(), conn);
Header locationHeader = method.getResponseHeader("Location");
assertEquals(302, method.getStatusCode());
@@ -201,7 +204,8 @@
HttpMethod method = new SimpleHttpMethod("/oldfile");
method.setFollowRedirects(true);
- method.setStrictMode(true);
+ client.getParams().setBooleanParameter(
+ HttpClientParams.REJECT_RELATIVE_REDIRECT, false);
method.execute(new HttpState(), conn);
Header locationHeader = method.getResponseHeader("Location");
assertEquals(302, method.getStatusCode());
1.29 +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.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- TestNoHost.java 11 Dec 2003 22:54:19 -0000 1.28
+++ TestNoHost.java 6 Jan 2004 20:08:56 -0000 1.29
@@ -83,7 +83,6 @@
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(TestHttpStatus.suite());
- suite.addTest(TestBase64.suite());
suite.addTest(TestCookie.suite());
suite.addTest(TestNVP.suite());
suite.addTest(TestHeader.suite());
1.5 +4 -4
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/ProxyAuthRequestHandler.java
Index: ProxyAuthRequestHandler.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/ProxyAuthRequestHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ProxyAuthRequestHandler.java 11 Dec 2003 09:19:18 -0000 1.4
+++ ProxyAuthRequestHandler.java 6 Jan 2004 20:08:56 -0000 1.5
@@ -148,7 +148,7 @@
try {
scheme = new BasicScheme();
scheme.processChallenge("basic realm=test");
- String expectedAuthString = scheme.authenticate(credentials, null,
null);
+ String expectedAuthString = scheme.authenticate(credentials, null);
return expectedAuthString.equals(clientAuth.getValue());
} catch (MalformedChallengeException e) {
// TODO Auto-generated catch block
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]