Package org.apache.thrift.transport
Class THttpClient
- java.lang.Object
-
- org.apache.thrift.transport.TTransport
-
- org.apache.thrift.transport.THttpClient
-
public class THttpClient extends TTransport
HTTP implementation of the TTransport interface. Used for working with a Thrift web services implementation (using for example TServlet). This class offers two implementations of the HTTP transport. One uses HttpURLConnection instances, the other HttpClient from Apache Http Components. The chosen implementation depends on the constructor used to create the THttpClient instance. Using the THttpClient(String url) constructor or passing null as the HttpClient to THttpClient(String url, HttpClient client) will create an instance which will use HttpURLConnection. When using HttpClient, the following configuration leads to 5-15% better performance than the HttpURLConnection implementation: http.protocol.version=HttpVersion.HTTP_1_1 http.protocol.content-charset=UTF-8 http.protocol.expect-continue=false http.connection.stalecheck=false Also note that under high load, the HttpURLConnection implementation may exhaust the open file descriptor limit.- See Also:
- THRIFT-970
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
THttpClient.Factory
-
Constructor Summary
Constructors Constructor Description THttpClient(java.lang.String url)
THttpClient(java.lang.String url, org.apache.http.client.HttpClient client)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes the transport.void
flush()
Flush any pending data out of a transport buffer.boolean
isOpen()
Queries whether the transport is open.void
open()
Opens the transport for reading/writing.int
read(byte[] buf, int off, int len)
Reads up to len bytes into buffer buf, starting at offset off.void
setConnectTimeout(int timeout)
void
setCustomHeader(java.lang.String key, java.lang.String value)
void
setCustomHeaders(java.util.Map<java.lang.String,java.lang.String> headers)
void
setReadTimeout(int timeout)
void
write(byte[] buf, int off, int len)
Writes up to len bytes from the buffer.-
Methods inherited from class org.apache.thrift.transport.TTransport
consumeBuffer, getBuffer, getBufferPosition, getBytesRemainingInBuffer, peek, readAll, write
-
-
-
-
Constructor Detail
-
THttpClient
public THttpClient(java.lang.String url) throws TTransportException
- Throws:
TTransportException
-
THttpClient
public THttpClient(java.lang.String url, org.apache.http.client.HttpClient client) throws TTransportException
- Throws:
TTransportException
-
-
Method Detail
-
setConnectTimeout
public void setConnectTimeout(int timeout)
-
setReadTimeout
public void setReadTimeout(int timeout)
-
setCustomHeaders
public void setCustomHeaders(java.util.Map<java.lang.String,java.lang.String> headers)
-
setCustomHeader
public void setCustomHeader(java.lang.String key, java.lang.String value)
-
open
public void open()
Description copied from class:TTransport
Opens the transport for reading/writing.- Specified by:
open
in classTTransport
-
close
public void close()
Description copied from class:TTransport
Closes the transport.- Specified by:
close
in classTTransport
-
isOpen
public boolean isOpen()
Description copied from class:TTransport
Queries whether the transport is open.- Specified by:
isOpen
in classTTransport
- Returns:
- True if the transport is open.
-
read
public int read(byte[] buf, int off, int len) throws TTransportException
Description copied from class:TTransport
Reads up to len bytes into buffer buf, starting at offset off.- Specified by:
read
in classTTransport
- Parameters:
buf
- Array to read intooff
- Index to start reading atlen
- Maximum number of bytes to read- Returns:
- The number of bytes actually read
- Throws:
TTransportException
- if there was an error reading data
-
write
public void write(byte[] buf, int off, int len)
Description copied from class:TTransport
Writes up to len bytes from the buffer.- Specified by:
write
in classTTransport
- Parameters:
buf
- The output data bufferoff
- The offset to start writing fromlen
- The number of bytes to write
-
flush
public void flush() throws TTransportException
Description copied from class:TTransport
Flush any pending data out of a transport buffer.- Overrides:
flush
in classTTransport
- Throws:
TTransportException
- if there was an error writing out data.
-
-