Custom HTTP headers patch from Dave Engberg
authorMark Slee <mcslee@apache.org>
Thu, 29 Nov 2007 02:57:34 +0000 (02:57 +0000)
committerMark Slee <mcslee@apache.org>
Thu, 29 Nov 2007 02:57:34 +0000 (02:57 +0000)
Reviewed By: mcslee

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665380 13f79535-47bb-0310-9956-ffa450edef68

lib/java/src/transport/THttpClient.java

index 8b42ba3..ab3893d 100644 (file)
@@ -12,6 +12,8 @@ import java.io.IOException;
 
 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 @@ public class THttpClient extends TTransport {
 
   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 @@ public class THttpClient extends TTransport {
     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 class THttpClient extends TTransport {
 
   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 @@ public class THttpClient extends TTransport {
       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 @@ public class THttpClient extends TTransport {
 
     } catch (IOException iox) {
       throw new TTransportException(iox);
-    } 
+    }
   }
 }