diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java index d68270bc62aed4a90e3a1023141940ca2c547a3f..0f11ea5340d713cf7db6ad63090f6a4d85b46b8d 100644 --- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java +++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java @@ -181,7 +181,13 @@ public class I2PSocketEepGet extends EepGet { "Cache-control: no-cache\r\n" + "Pragma: no-cache\r\n" + "User-Agent: " + USER_AGENT + "\r\n" + - "Connection: close\r\n\r\n"); + "Connection: close\r\n"); + if (_extraHeaders != null) { + for (String hdr : _extraHeaders) { + buf.append(hdr).append("\r\n"); + } + } + buf.append("\r\n"); return buf.toString(); } diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java index c5edd976f330fbfed970671afa5e95c5c31ad245..27c0fd2ad3745cedcefac5dd7b0d55dcbfa37541 100644 --- a/core/java/src/net/i2p/util/EepGet.java +++ b/core/java/src/net/i2p/util/EepGet.java @@ -45,6 +45,7 @@ public class EepGet { private final String _postData; private boolean _allowCaching; protected final List<StatusListener> _listeners; + protected List<String> _extraHeaders; protected boolean _keepFetching; protected Socket _proxy; @@ -1022,7 +1023,13 @@ public class EepGet { // This will be replaced if we are going through I2PTunnelHTTPClient buf.append("User-Agent: " + USER_AGENT + "\r\n" + "Accept-Encoding: \r\n" + - "Connection: close\r\n\r\n"); + "Connection: close\r\n"); + if (_extraHeaders != null) { + for (String hdr : _extraHeaders) { + buf.append(hdr).append("\r\n"); + } + } + buf.append("\r\n"); if (post) buf.append(_postData); if (_log.shouldLog(Log.DEBUG)) @@ -1075,4 +1082,16 @@ public class EepGet { public void setWriteErrorToOutput() { _shouldWriteErrorToOutput = true; } + + /** + * Add an extra header to the request. + * Must be called before fetch(). + * + * @since 0.8.8 + */ + public void addHeader(String name, String value) { + if (_extraHeaders == null) + _extraHeaders = new ArrayList(); + _extraHeaders.add(name + ": " + value); + } } diff --git a/core/java/src/net/i2p/util/PartialEepGet.java b/core/java/src/net/i2p/util/PartialEepGet.java index 1b44fce25d8c3eb5fc9919dfdbf8f5034171d8ed..6075a4ca4f31166c08cb296fa85aa9dcc312885b 100644 --- a/core/java/src/net/i2p/util/PartialEepGet.java +++ b/core/java/src/net/i2p/util/PartialEepGet.java @@ -119,7 +119,13 @@ public class PartialEepGet extends EepGet { // This will be replaced if we are going through I2PTunnelHTTPClient buf.append("User-Agent: " + USER_AGENT + "\r\n" + "Accept-Encoding: \r\n" + - "Connection: close\r\n\r\n"); + "Connection: close\r\n"); + if (_extraHeaders != null) { + for (String hdr : _extraHeaders) { + buf.append(hdr).append("\r\n"); + } + } + buf.append("\r\n"); if (_log.shouldLog(Log.DEBUG)) _log.debug("Request: [" + buf.toString() + "]");