diff --git a/pom.xml b/pom.xml index ca16216..f9044c5 100644 --- a/pom.xml +++ b/pom.xml @@ -1,16 +1,16 @@ - + 4.0.0 com.rometools rome-parent - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT rome-fetcher + 1.6.0-SNAPSHOT jar rome-fetcher @@ -20,9 +20,9 @@ http://rometools.github.io/rome-fetcher/ - scm:git:git@github.com:rometools/rome-fetcher.git - scm:git:git@github.com:rometools/rome-fetcher.git - https://github.com/rometools/rome-fetcher/ + scm:git:ssh://github.com/rometools/rome-fetcher.git + scm:git:ssh://git@github.com/rometools/rome-fetcher.git + https://github.com/rometools/rome-fetcher @@ -68,7 +68,7 @@ com.rometools rome - 1.5.0-SNAPSHOT + 1.6.0-SNAPSHOT commons-httpclient diff --git a/src/main/java/com/rometools/fetcher/impl/HttpClientFeedFetcher.java b/src/main/java/com/rometools/fetcher/impl/HttpClientFeedFetcher.java index 67f99e7..3dadb58 100644 --- a/src/main/java/com/rometools/fetcher/impl/HttpClientFeedFetcher.java +++ b/src/main/java/com/rometools/fetcher/impl/HttpClientFeedFetcher.java @@ -21,6 +21,7 @@ import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; +import java.util.Map; import java.util.zip.GZIPInputStream; import org.apache.commons.httpclient.Credentials; @@ -50,6 +51,7 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher { private FeedFetcherCache feedInfoCache; private volatile HttpClientMethodCallbackIntf httpClientMethodCallback; private volatile HttpClientParams httpClientParams; + private Map customRequestHeaders; public HttpClientFeedFetcher() { setHttpClientParams(new HttpClientParams()); @@ -160,6 +162,14 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher { public int getReadTimeout() { return getHttpClientParams().getSoTimeout(); } + + /** + * Apply any request headers to the HTTP method call. + * @param customRequestHeaders + */ + public synchronized void setCustomRequestHeaders(final Map customRequestHeaders) { + this.customRequestHeaders = customRequestHeaders; + } @Override public SyndFeed retrieveFeed(final URL url) throws IllegalArgumentException, IOException, FeedException, FetcherException { @@ -196,8 +206,18 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher { final String urlStr = feedUrl.toString(); final HttpMethod method = new GetMethod(urlStr); - method.addRequestHeader("Accept-Encoding", "gzip"); - method.addRequestHeader("User-Agent", userAgent); + if (customRequestHeaders == null) { + method.addRequestHeader("Accept-Encoding", "gzip"); + method.addRequestHeader("User-Agent", userAgent); + + } else { + for (final Map.Entry entry : customRequestHeaders.entrySet()) { + method.addRequestHeader(entry.getKey(), entry.getValue()); + } + if (!customRequestHeaders.containsKey("Accept-Encoding")) method.addRequestHeader("Accept-Encoding", "gzip"); + if (!customRequestHeaders.containsKey("User-Agent")) method.addRequestHeader("User-Agent", userAgent); + } + method.setFollowRedirects(true); if (httpClientMethodCallback != null) {