Package org.apache.thrift.transport
Class THttpClient
- java.lang.Object
-
- org.apache.thrift.transport.TTransport
-
- org.apache.thrift.transport.TEndpointTransport
-
- org.apache.thrift.transport.THttpClient
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class THttpClient extends TEndpointTransport
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 classTHttpClient.Factory
-
Field Summary
-
Fields inherited from class org.apache.thrift.transport.TEndpointTransport
knownMessageSize, remainingMessageSize
-
-
Constructor Summary
Constructors Constructor Description THttpClient(java.lang.String url)THttpClient(java.lang.String url, org.apache.http.client.HttpClient client)THttpClient(TConfiguration config, java.lang.String url)THttpClient(TConfiguration config, java.lang.String url, org.apache.http.client.HttpClient client)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes the transport.voidflush()Flush any pending data out of a transport buffer.booleanisOpen()Queries whether the transport is open.voidopen()Opens the transport for reading/writing.intread(byte[] buf, int off, int len)Reads up to len bytes into buffer buf, starting at offset off.voidsetConnectTimeout(int timeout)voidsetCustomHeader(java.lang.String key, java.lang.String value)voidsetCustomHeaders(java.util.Map<java.lang.String,java.lang.String> headers)voidsetReadTimeout(int timeout)voidwrite(byte[] buf, int off, int len)Writes up to len bytes from the buffer.-
Methods inherited from class org.apache.thrift.transport.TEndpointTransport
checkReadBytesAvailable, countConsumedMessageBytes, getConfiguration, getMaxMessageSize, resetConsumedMessageSize, updateKnownMessageSize
-
Methods inherited from class org.apache.thrift.transport.TTransport
consumeBuffer, getBuffer, getBufferPosition, getBytesRemainingInBuffer, peek, read, readAll, write, write
-
-
-
-
Constructor Detail
-
THttpClient
public THttpClient(TConfiguration config, java.lang.String url) throws TTransportException
- Throws:
TTransportException
-
THttpClient
public THttpClient(java.lang.String url) throws TTransportException- Throws:
TTransportException
-
THttpClient
public THttpClient(TConfiguration config, java.lang.String url, org.apache.http.client.HttpClient client) 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:TTransportOpens the transport for reading/writing.- Specified by:
openin classTTransport
-
close
public void close()
Description copied from class:TTransportCloses the transport.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein classTTransport
-
isOpen
public boolean isOpen()
Description copied from class:TTransportQueries whether the transport is open.- Specified by:
isOpenin classTTransport- Returns:
- True if the transport is open.
-
read
public int read(byte[] buf, int off, int len) throws TTransportExceptionDescription copied from class:TTransportReads up to len bytes into buffer buf, starting at offset off.- Specified by:
readin 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:TTransportWrites up to len bytes from the buffer.- Specified by:
writein classTTransport- Parameters:
buf- The output data bufferoff- The offset to start writing fromlen- The number of bytes to write
-
flush
public void flush() throws TTransportExceptionDescription copied from class:TTransportFlush any pending data out of a transport buffer.- Overrides:
flushin classTTransport- Throws:
TTransportException- if there was an error writing out data.
-
-