Custom HTTP headers patch from Dave Engberg
Reviewed By: mcslee
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665380 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/java/src/transport/THttpClient.java b/lib/java/src/transport/THttpClient.java
index 8b42ba3..ab3893d 100644
--- a/lib/java/src/transport/THttpClient.java
+++ b/lib/java/src/transport/THttpClient.java
@@ -12,6 +12,8 @@
import java.net.URL;
import java.net.HttpURLConnection;
+import java.util.HashMap;
+import java.util.Map;
/**
* HTTP implementation of the TTransport interface. Used for working with a
@@ -32,6 +34,8 @@
private int readTimeout_ = 0;
+ private Map<String,String> customHeaders_ = null;
+
public THttpClient(String url) throws TTransportException {
try {
url_ = new URL(url);
@@ -48,6 +52,17 @@
readTimeout_ = timeout;
}
+ public void setCustomHeaders(Map<String,String> headers) {
+ customHeaders_ = headers;
+ }
+
+ public void setCustomHeader(String key, String value) {
+ if (customHeaders_ == null) {
+ customHeaders_ = new HashMap<String, String>();
+ }
+ customHeaders_.put(key, value);
+ }
+
public void open() {}
public void close() {
@@ -86,7 +101,7 @@
public void flush() throws TTransportException {
// Extract request and reset buffer
- byte[] data = requestBuffer_.toByteArray();
+ byte[] data = requestBuffer_.toByteArray();
requestBuffer_.reset();
try {
@@ -106,6 +121,11 @@
connection.setRequestProperty("Content-Type", "application/x-thrift");
connection.setRequestProperty("Accept", "application/x-thrift");
connection.setRequestProperty("User-Agent", "Java/THttpClient");
+ if (customHeaders_ != null) {
+ for (Map.Entry<String, String> header : customHeaders_.entrySet()) {
+ connection.setRequestProperty(header.getKey(), header.getValue());
+ }
+ }
connection.setDoOutput(true);
connection.connect();
connection.getOutputStream().write(data);
@@ -120,6 +140,6 @@
} catch (IOException iox) {
throw new TTransportException(iox);
- }
+ }
}
}