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);
-    } 
+    }
   }
 }