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
-
Field Summary
Fields inherited from class org.apache.thrift.transport.TEndpointTransport
knownMessageSize, remainingMessageSize
-
Constructor Summary
ConstructorDescriptionTHttpClient
(String url) THttpClient
(String url, org.apache.hc.client5.http.classic.HttpClient client) THttpClient
(TConfiguration config, String url) THttpClient
(TConfiguration config, String url, org.apache.hc.client5.http.classic.HttpClient client) -
Method Summary
Modifier and TypeMethodDescriptionvoid
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
(String key, String value) void
setCustomHeaders
(Map<String, String> headers) void
setReadTimeout
(int timeout) Deprecated.void
write
(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, updateKnownMessageSize
Methods 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.hc.client5.http.classic.HttpClient client) throws TTransportException - Throws:
TTransportException
-
THttpClient
public THttpClient(String url, org.apache.hc.client5.http.classic.HttpClient client) throws TTransportException - Throws:
TTransportException
-
-
Method Details
-
setConnectTimeout
public void setConnectTimeout(int timeout) -
setReadTimeout
Deprecated.Use insteadBasicHttpClientConnectionManager.setConnectionConfig(org.apache.hc.client5.http.config.ConnectionConfig)
orPoolingHttpClientConnectionManager.setDefaultConnectionConfig(org.apache.hc.client5.http.config.ConnectionConfig)
-
setCustomHeaders
-
setCustomHeader
-
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 interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- 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
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
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.
-