package org.wamblee.crawler;
-import java.io.PrintStream;
+import java.io.IOException;
import javax.xml.transform.TransformerException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.w3c.dom.Document;
+import org.wamblee.xml.XslTransformer;
/**
* Gets a page by issueing a get request.
* @param aMaxTries Maximum number of retries.
* @param aMaxDelay Maximum delay before executing the request.
* @param aParams Request parameters to use.
+ * @param aHeaders Request headers to use.
* @param aXslt XSLT to use.
*/
- public GetPageRequest(int aMaxTries, int aMaxDelay, NameValuePair[] aParams, String aXslt) {
- super(aMaxTries, aMaxDelay, aParams, aXslt, null);
+ public GetPageRequest(int aMaxTries, int aMaxDelay, NameValuePair[] aParams,
+ NameValuePair[] aHeaders, String aXslt, XslTransformer aTransformer) {
+ super(aMaxTries, aMaxDelay, aParams, aHeaders, aXslt, aTransformer);
}
-
- /**
- * Constructs the request.
- * @param aMaxTries Maximum number of retries.
- * @param aMaxDelay Maximum delay before executing the request.
- * @param aParams Request parameters to use.
- * @param aXslt XSLT to use.
- * @param aOs Logging output stream to use.
- */
- public GetPageRequest(int aMaxTries, int aMaxDelay, NameValuePair[] aParams, String aXslt, PrintStream aOs) {
- super(aMaxTries, aMaxDelay, aParams, aXslt, aOs);
- }
-
+
/*
* (non-Javadoc)
*
* @see org.wamblee.crawler.PageRequest#getPage(org.apache.commons.httpclient.HttpClient)
*/
- public Document execute(String aUrl, HttpClient aClient)
+ public Document execute(String aUrl, NameValuePair[] aParams, HttpClient aClient)
throws PageException {
HttpMethod method = new GetMethod(aUrl);
- if (getParameters().length > 0) {
+ NameValuePair[] params = getParameters(aParams);
+ if (params.length > 0) {
String oldQueryString = method.getQueryString();
- method.setQueryString(getParameters());
+ method.setQueryString(params);
String queryString = method.getQueryString();
if (oldQueryString.length() > 0) {
queryString = queryString + '&' + oldQueryString;
try {
return executeMethod(aClient, method);
} catch (TransformerException e) {
- throw new PageException(e.getMessage(), e);
+ throw new PageException("Transformation problem for url " + aUrl, e);
+ } catch (IOException e) {
+ throw new PageException("Problem getting " + aUrl, e);
}
}