Here's the code:
================
package at.vtg.httpclient;
// or whatever you want ;-)
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* In this class are only methods to copy a HttpMethod: PUT, GET, POST,
DELETE, TRACE, ...
*
* @author Thomas Mathis
* @version $Revision: 1.4 $
*/
public class HttpMethodUtil {
private static Log log = LogFactory.getLog(HttpMethodUtil.class);
private static void copyEntityEnclosingMethod( EntityEnclosingMethod m,
EntityEnclosingMethod copy )
throws java.io.IOException
{
log.debug( "copy EntityEnclosingMethod" );
copy.setRequestBody( m.getRequestBodyAsString() );
copy.setUseExpectHeader(m.getUseExpectHeader());
}
private static void copyHttpMethodBase(HttpMethodBase m, HttpMethodBase
copy) {
log.debug( "copy HttpMethodBase" );
if ( m.getHostConfiguration() != null ) {
copy.setHostConfiguration( new HostConfiguration(
m.getHostConfiguration() ) );
}
copy.setHttp11(m.isHttp11());
copy.setStrictMode(m.isStrictMode());
}
/**
* Clones a HttpMethod. <br>
* <b>Attention:</b> You have to clone a method before it has been
executed, because the URI
* can change if followRedirects is set to true.
*
* @param m the HttpMethod to clone
*
* @return the cloned HttpMethod, null if the HttpMethod could not be
instantiated
*
* @throws java.io.IOException if the request body couldn't be read
*/
public static HttpMethod clone(HttpMethod m) throws java.io.IOException
{
log.debug( "clone HttpMethod" );
HttpMethod copy = null;
// copy the HttpMethod
try {
copy = (HttpMethod) m.getClass().newInstance();
} catch (InstantiationException iEx) {
} catch (IllegalAccessException iaEx) {
}
if ( copy == null ) {
return null;
}
copy.setDoAuthentication(m.getDoAuthentication());
copy.setFollowRedirects(m.getFollowRedirects());
copy.setPath( m.getPath() );
copy.setQueryString(m.getQueryString());
// clone the headers
Header[] h = m.getRequestHeaders();
int size = (h == null) ? 0 : h.length;
for (int i = 0; i < size; i++) {
copy.setRequestHeader(new Header(h[i].getName(),
h[i].getValue()));
}
copy.setStrictMode(m.isStrictMode());
if ( m instanceof HttpMethodBase ) {
copyHttpMethodBase( (HttpMethodBase) m, (HttpMethodBase) copy );
}
if ( m instanceof EntityEnclosingMethod ) {
copyEntityEnclosingMethod( (EntityEnclosingMethod) m,
(EntityEnclosingMethod) copy );
}
return copy;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]