Class THttpClient
- All Implemented Interfaces:
Closeable,AutoCloseable
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:
-
Nested Class Summary
Nested Classes -
Field Summary
Fields inherited from class org.apache.thrift.transport.TEndpointTransport
knownMessageSize, remainingMessageSize -
Constructor Summary
ConstructorsConstructorDescriptionTHttpClient(String url) THttpClient(String url, org.apache.http.client.HttpClient client) THttpClient(TConfiguration config, String url) THttpClient(TConfiguration config, String url, org.apache.http.client.HttpClient client) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()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(String key, String value) voidsetCustomHeaders(Map<String, 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, getMaxFrameSize, getMaxMessageSize, resetConsumedMessageSize, setMaxFrameSize, updateKnownMessageSizeMethods inherited from class org.apache.thrift.transport.TTransport
consumeBuffer, getBuffer, getBufferPosition, getBytesRemainingInBuffer, peek, read, readAll, write, write
-
Constructor Details
-
THttpClient
- Throws:
TTransportException
-
THttpClient
- Throws:
TTransportException
-
THttpClient
public THttpClient(TConfiguration config, String url, org.apache.http.client.HttpClient client) throws TTransportException - Throws:
TTransportException
-
THttpClient
- Throws:
TTransportException
-
-
Method Details
-
setConnectTimeout
public void setConnectTimeout(int timeout) -
setReadTimeout
public void setReadTimeout(int timeout) -
setCustomHeaders
-
setCustomHeader
-
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 interfaceAutoCloseable- Specified by:
closein interfaceCloseable- 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
Description 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
Description 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.
-