Package net.shibboleth.shared.httpclient

# Class HttpClientSupport

java.lang.Object
net.shibboleth.shared.httpclient.HttpClientSupport

public final class HttpClientSupport extends Object
Support class for using `HttpClient` and related components.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`CONTEXT_KEY_DYNAMIC_CONTEXT_HANDLERS`
Context key for instances of dynamic context handlers to be invoked before and after the HTTP request.
`static final String`
`CONTEXT_KEY_REQUEST_TIMEOUT`
Context key for an overall request timeout.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`private`
`HttpClientSupport()`
Constructor to prevent instantiation.

## Method Summary

Modifier and Type
Method
Description
`static void`
`addDynamicContextHandlerFirst(org.apache.hc.client5.http.protocol.HttpClientContext context, HttpClientContextHandler handler)`
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the first handler list position.
`static void`
`addDynamicContextHandlerFirst(org.apache.hc.client5.http.protocol.HttpClientContext context, HttpClientContextHandler handler, boolean uniqueType)`
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the first handler list position.
`static void`
`addDynamicContextHandlerLast(org.apache.hc.client5.http.protocol.HttpClientContext context, HttpClientContextHandler handler)`
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the last handler list position.
`static void`
`addDynamicContextHandlerLast(org.apache.hc.client5.http.protocol.HttpClientContext context, HttpClientContextHandler handler, boolean uniqueType)`
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the last handler list position.
`static void`
`addRequestTimeout(org.apache.hc.client5.http.protocol.HttpClientContext context, Duration timeout)`
Add overall request timeout, as implemented by `RequestTimeLimitingHttpClient`.
`static org.apache.hc.client5.http.protocol.HttpClientContext`
`buildHttpClientContext()`
Non-null version of client context creation.
`static org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory`
`buildNoTrustTLSSocketFactory()`
Build a TLS-capable instance of `LayeredConnectionSocketFactory` which accepts all peer certificates and performs no hostname verification.
`static X509TrustManager`
`buildNoTrustX509TrustManager()`
Build an instance of `X509TrustManager` which trusts all certificates.
`static org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory`
`buildStrictTLSSocketFactory()`
Build an instance of TLS-capable `LayeredConnectionSocketFactory` which uses the standard JSSE default `SSLContext` and which performs strict hostname verification.
`static List<HttpClientContextHandler>`
`getDynamicContextHandlerList(org.apache.hc.client5.http.protocol.HttpClientContext context)`
Get the list of `HttpClientContextHandler` for the `HttpClientContext`.
`static String`
`toString(org.apache.hc.core5.http.HttpEntity entity, int maxLength)`
Read the contents of an entity and return it as a String.
`static String`
`toString(org.apache.hc.core5.http.HttpEntity entity, String defaultCharset, int maxLength)`
Get the entity content as a String, using the provided default character set if none is found in the entity.
`static String`
`toString(org.apache.hc.core5.http.HttpEntity entity, Charset defaultCharset, int maxLength)`
Get the entity content as a String, using the provided default character set if none is found in the entity.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### CONTEXT_KEY_DYNAMIC_CONTEXT_HANDLERS

@Nonnull @NotEmpty public static final String CONTEXT_KEY_DYNAMIC_CONTEXT_HANDLERS
Context key for instances of dynamic context handlers to be invoked before and after the HTTP request. Must be an instance of `List``<``HttpClientContextHandler``>`.

See Also:
  - Constant Field Values

### CONTEXT_KEY_REQUEST_TIMEOUT

@Nonnull @NotEmpty public static final String CONTEXT_KEY_REQUEST_TIMEOUT
Context key for an overall request timeout. Must be an instance of `Duration`.

See Also:
  - Constant Field Values

## Constructor Details

### HttpClientSupport

private HttpClientSupport()
Constructor to prevent instantiation.

## Method Details

### buildStrictTLSSocketFactory

@Nonnull public static org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory buildStrictTLSSocketFactory()
Build an instance of TLS-capable `LayeredConnectionSocketFactory` which uses the standard JSSE default `SSLContext` and which performs strict hostname verification.

Returns:
  a new instance of HttpClient SSL connection socket factory

### buildNoTrustTLSSocketFactory

@Nonnull public static org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory buildNoTrustTLSSocketFactory()
Build a TLS-capable instance of `LayeredConnectionSocketFactory` which accepts all peer certificates and performs no hostname verification.

Returns:
  a new instance of HttpClient SSL connection socket factory

### buildNoTrustX509TrustManager

@Nonnull public static X509TrustManager buildNoTrustX509TrustManager()
Build an instance of `X509TrustManager` which trusts all certificates.

Returns:
  a new trust manager instance

### buildHttpClientContext

@Nonnull public static org.apache.hc.client5.http.protocol.HttpClientContext buildHttpClientContext()
Non-null version of client context creation.

Returns:
  the new client context instance
Since:
  9.0.0

### getDynamicContextHandlerList

@Nonnull @Live public static List<HttpClientContextHandler> getDynamicContextHandlerList(@Nonnull org.apache.hc.client5.http.protocol.HttpClientContext context)
Get the list of `HttpClientContextHandler` for the `HttpClientContext`.

Parameters:
  `context` - the client context
Returns:
  the handler list

### addDynamicContextHandlerFirst

public static void addDynamicContextHandlerFirst(@Nonnull org.apache.hc.client5.http.protocol.HttpClientContext context, @Nonnull HttpClientContextHandler handler)
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the first handler list position.

Parameters:
  `context` - the client context
  `handler` - the handler to add

### addDynamicContextHandlerFirst

public static void addDynamicContextHandlerFirst(@Nonnull org.apache.hc.client5.http.protocol.HttpClientContext context, @Nonnull HttpClientContextHandler handler, boolean uniqueType)
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the first handler list position.

Parameters:
  `context` - the client context
  `handler` - the handler to add
  `uniqueType` - whether to only add the handler if an instance of its (exact) class is not already present

### addDynamicContextHandlerLast

public static void addDynamicContextHandlerLast(@Nonnull org.apache.hc.client5.http.protocol.HttpClientContext context, @Nonnull HttpClientContextHandler handler)
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the last handler list position.

Parameters:
  `context` - the client context
  `handler` - the handler to add

### addDynamicContextHandlerLast

public static void addDynamicContextHandlerLast(@Nonnull org.apache.hc.client5.http.protocol.HttpClientContext context, @Nonnull HttpClientContextHandler handler, boolean uniqueType)
Add the specified instance of `HttpClientContextHandler` to the `HttpClientContext` in the last handler list position.

Parameters:
  `context` - the client context
  `handler` - the handler to add
  `uniqueType` - whether to only add the handler if an instance of its (exact) class is not already present

### addRequestTimeout

public static void addRequestTimeout(@Nonnull org.apache.hc.client5.http.protocol.HttpClientContext context, @Nullable Duration timeout)
Add overall request timeout, as implemented by `RequestTimeLimitingHttpClient`.

Parameters:
  `context` - the client context
  `timeout` - the request timeout

### toString

@Nullable public static String toString(@Nonnull org.apache.hc.core5.http.HttpEntity entity, @Nullable Charset defaultCharset, int maxLength) throws IOException, org.apache.hc.core5.http.ParseException
Get the entity content as a String, using the provided default character set if none is found in the entity.

If defaultCharset is null, the default "ISO-8859-1" is used.

Parameters:
  `entity` - must not be null
  `defaultCharset` - character set to be applied if none found in the entity
  `maxLength` - limit on size of content
Returns:
  the entity content as a String. May be null if `HttpEntity.getContent()` is null.
Throws:
  `org.apache.hc.core5.http.ParseException` - if header elements cannot be parsed
  `IOException` - if an error occurs reading the input stream, or the size exceeds limits
  `UnsupportedCharsetException` - when the content's charset is not available

### toString

@Nullable public static String toString(@Nonnull org.apache.hc.core5.http.HttpEntity entity, @Nullable String defaultCharset, int maxLength) throws IOException, org.apache.hc.core5.http.ParseException
Get the entity content as a String, using the provided default character set if none is found in the entity. If defaultCharset is null, the default "ISO-8859-1" is used.

Parameters:
  `entity` - must not be null
  `defaultCharset` - character set to be applied if none found in the entity
  `maxLength` - limit on size of content
Returns:
  the entity content as a String. May be null if `HttpEntity.getContent()` is null.
Throws:
  `org.apache.hc.core5.http.ParseException` - if header elements cannot be parsed
  `IOException` - if an error occurs reading the input stream, or the size exceeds limits
  `UnsupportedCharsetException` - when the content's charset is not available

### toString

@Nullable public static String toString(@Nonnull org.apache.hc.core5.http.HttpEntity entity, int maxLength) throws IOException, org.apache.hc.core5.http.ParseException
Read the contents of an entity and return it as a String. The content is converted using the character set from the entity (if any), failing that, "ISO-8859-1" is used.

Parameters:
  `entity` - the entity to convert to a string; must not be null
  `maxLength` - limit on size of content
Returns:
  the entity content as a String. May be null if `HttpEntity.getContent()` is null.
Throws:
  `org.apache.hc.core5.http.ParseException` - if header elements cannot be parsed
  `IOException` - if an error occurs reading the input stream, or the size exceeds limits
  `UnsupportedCharsetException` - when the content's charset is not available