allow for custom request headers to be passed through the the http method call
This commit is contained in:
parent
1c7452bef7
commit
df75a19d3b
1 changed files with 22 additions and 2 deletions
|
@ -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;
|
||||
|
@ -48,6 +49,7 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher {
|
|||
private FeedFetcherCache feedInfoCache;
|
||||
private volatile HttpClientMethodCallbackIntf httpClientMethodCallback;
|
||||
private volatile HttpClientParams httpClientParams;
|
||||
private Map<String,String> customRequestHeaders;
|
||||
|
||||
public HttpClientFeedFetcher() {
|
||||
setHttpClientParams(new HttpClientParams());
|
||||
|
@ -152,6 +154,14 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher {
|
|||
return getHttpClientParams().getSoTimeout();
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply any request headers to the HTTP method call.
|
||||
* @param customRequestHeaders
|
||||
*/
|
||||
public synchronized void setCustomRequestHeaders(final Map<String,String> customRequestHeaders) {
|
||||
this.customRequestHeaders = customRequestHeaders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SyndFeed retrieveFeed(final URL url) throws IllegalArgumentException, IOException, FeedException, FetcherException {
|
||||
return this.retrieveFeed(getUserAgent(), url);
|
||||
|
@ -187,8 +197,18 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher {
|
|||
final String urlStr = feedUrl.toString();
|
||||
|
||||
final HttpMethod method = new GetMethod(urlStr);
|
||||
if (customRequestHeaders == null) {
|
||||
method.addRequestHeader("Accept-Encoding", "gzip");
|
||||
method.addRequestHeader("User-Agent", userAgent);
|
||||
|
||||
} else {
|
||||
for (final Map.Entry<String,String> 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) {
|
||||
|
|
Loading…
Reference in a new issue