org.apache.solr.client.solrj.impl

## Class HttpSolrClient

- java.lang.Object
- - org.apache.solr.client.solrj.SolrClient
  - - org.apache.solr.client.solrj.impl.HttpSolrClient

All Implemented Interfaces:
  Closeable, Serializable, AutoCloseable

Direct Known Subclasses:
  DelegationTokenHttpSolrClient

    public class HttpSolrClient
    extends SolrClient

A SolrClient implementation that talks directly to a Solr server via HTTP

See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static class` `HttpSolrClient.Builder` Constructs `HttpSolrClient` instances from provided configuration.
`static class` `HttpSolrClient.HttpUriRequestResponse`
`static class` `HttpSolrClient.RemoteExecutionException` This should be thrown when a server has an error in executing the request and it sends a proper payload back to the client
`static class` `HttpSolrClient.RemoteSolrException` Subclass of SolrException that allows us to capture an arbitrary HTTP status code that may have been returned by the remote server or a proxy along the way.

### Field Summary

Fields
`static String` `AGENT` User-Agent String.
`protected String` `baseUrl` The URL of the Solr server.
`protected ModifiableSolrParams` `invariantParams` Default value: null / empty.
`protected ResponseParser` `parser` Default response parser is BinaryResponseParser
`protected RequestWriter` `requestWriter` The RequestWriter used to write all requests to Solr

### Constructor Summary

Constructors
`protected` `HttpSolrClient(HttpSolrClient.Builder builder)`
`protected` `HttpSolrClient(String baseURL, org.apache.http.client.HttpClient client, ResponseParser parser, boolean allowCompression)` Deprecated. use `HttpSolrClient(Builder)` instead, as it is a more extension/subclassing-friendly alternative
`protected` `HttpSolrClient(String baseURL, org.apache.http.client.HttpClient client, ResponseParser parser, boolean allowCompression, ModifiableSolrParams invariantParams)` Deprecated. use `HttpSolrClient(Builder)` instead, as it is a more extension/subclassing-friendly alternative

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`protected ModifiableSolrParams` `calculateQueryParams(Set<String> queryParamNames, ModifiableSolrParams wparams)`
`void` `close()` Close the `HttpClientConnectionManager` from the internal client.
`protected org.apache.http.client.methods.HttpRequestBase` `createMethod(SolrRequest request, String collection)`
`protected NamedList<Object>` `executeMethod(org.apache.http.client.methods.HttpRequestBase method, ResponseParser processor, boolean isV2Api)`
`String` `getBaseURL()`
`org.apache.http.client.HttpClient` `getHttpClient()` Return the HttpClient this instance uses.
`ModifiableSolrParams` `getInvariantParams()` Retrieve the default list of parameters are added to every request regardless.
`ResponseParser` `getParser()`
`Set<String>` `getQueryParams()`
`HttpSolrClient.HttpUriRequestResponse` `httpUriRequest(SolrRequest request)`
`HttpSolrClient.HttpUriRequestResponse` `httpUriRequest(SolrRequest request, ResponseParser processor)`
`boolean` `isUseMultiPartPost()`
`NamedList<Object>` `request(SolrRequest request, ResponseParser processor)`
`NamedList<Object>` `request(SolrRequest request, ResponseParser processor, String collection)`
`NamedList<Object>` `request(SolrRequest request, String collection)` Process the request.
`void` `setBaseURL(String baseURL)` Change the base-url used when sending requests to Solr.
`void` `setConnectionTimeout(int timeout)` Deprecated. since 7.0 Use `HttpSolrClient.Builder` methods instead.
`void` `setFollowRedirects(boolean followRedirects)` Configure whether the client should follow redirects or not.
`void` `setParser(ResponseParser processor)` Note: This setter method is not thread-safe.
`void` `setQueryParams(Set<String> queryParams)` Expert Method
`void` `setRequestWriter(RequestWriter requestWriter)`
`void` `setSoTimeout(int timeout)` Deprecated.
`void` `setUseMultiPartPost(boolean useMultiPartPost)` Set the multipart connection properties

### Methods inherited from class org.apache.solr.client.solrj.SolrClient

`add, add, add, add, add, add, add, add, add, add, addBean, addBean, addBean, addBean, addBeans, addBeans, addBeans, addBeans, addBeans, addBeans, commit, commit, commit, commit, commit, commit, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteByQuery, deleteByQuery, deleteByQuery, deleteByQuery, getBinder, getById, getById, getById, getById, getById, getById, getById, getById, optimize, optimize, optimize, optimize, optimize, optimize, ping, query, query, query, query, queryAndStreamResponse, queryAndStreamResponse, request, rollback, rollback`

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

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

### Field Detail

#### AGENT

    public static final String AGENT

User-Agent String.

#### baseUrl

    protected volatile String baseUrl

The URL of the Solr server.

#### invariantParams

    protected ModifiableSolrParams invariantParams

Default value: null / empty.

Parameters that are added to every request regardless. This may be a place to add something like an authentication token.

#### parser

    protected volatile ResponseParser parser

Default response parser is BinaryResponseParser

This parser represents the default Response Parser chosen to parse the response if the parser were not specified as part of the request.

See Also:
  `BinaryResponseParser`

#### requestWriter

    protected volatile RequestWriter requestWriter

The RequestWriter used to write all requests to Solr

See Also:
  `RequestWriter`

### Constructor Detail

#### HttpSolrClient

    @Deprecated
    protected HttpSolrClient(String baseURL,
                                         org.apache.http.client.HttpClient client,
                                         ResponseParser parser,
                                         boolean allowCompression)

Deprecated. use `HttpSolrClient(Builder)` instead, as it is a more extension/subclassing-friendly alternative

#### HttpSolrClient

    @Deprecated
    protected HttpSolrClient(String baseURL,
                                         org.apache.http.client.HttpClient client,
                                         ResponseParser parser,
                                         boolean allowCompression,
                                         ModifiableSolrParams invariantParams)

Deprecated. use `HttpSolrClient(Builder)` instead, as it is a more extension/subclassing-friendly alternative
The constructor.

Parameters:
  `baseURL` - The base url to communicate with the Solr server
  `client` - Http client instance to use for communication
  `parser` - Response parser instance to use to decode response from Solr server
  `allowCompression` - Should compression be allowed ?
  `invariantParams` - The parameters which should be included with every request.

#### HttpSolrClient

    protected HttpSolrClient(HttpSolrClient.Builder builder)

### Method Detail

#### getQueryParams

    public Set<String> getQueryParams()

#### setQueryParams

    public void setQueryParams(Set<String> queryParams)

Expert Method

Parameters:
  `queryParams` - set of param keys to only send via the query string Note that the param will be sent as a query string if the key is part of this Set or the SolrRequest's query params.
See Also:
  `SolrRequest.getQueryParams()`

#### request

    public NamedList<Object> request(SolrRequest request,
                                     String collection)
                              throws SolrServerException,
                                     IOException

Process the request. If `SolrRequest.getResponseParser()` is null, then use `getParser()`

Specified by:
  `request` in class `SolrClient`
Parameters:
  `request` - The `SolrRequest` to process
  `collection` - the collection to execute the request against
Returns:
  The `NamedList` result
Throws:
  `IOException` - If there is a low-level I/O error.
  `SolrServerException` - if there is an error on the server
See Also:
  `request(org.apache.solr.client.solrj.SolrRequest, org.apache.solr.client.solrj.ResponseParser)`

#### request

    public NamedList<Object> request(SolrRequest request,
                                     ResponseParser processor)
                              throws SolrServerException,
                                     IOException

Throws:
  `SolrServerException`
  `IOException`

#### request

    public NamedList<Object> request(SolrRequest request,
                                     ResponseParser processor,
                                     String collection)
                              throws SolrServerException,
                                     IOException

Throws:
  `SolrServerException`
  `IOException`

#### httpUriRequest

    public HttpSolrClient.HttpUriRequestResponse httpUriRequest(SolrRequest request)
                                                         throws SolrServerException,
                                                                IOException

Throws:
  `SolrServerException`
  `IOException`
WARNING: This API is experimental and might change in incompatible ways in the next release.

#### httpUriRequest

    public HttpSolrClient.HttpUriRequestResponse httpUriRequest(SolrRequest request,
                                                                ResponseParser processor)
                                                         throws SolrServerException,
                                                                IOException

Throws:
  `SolrServerException`
  `IOException`
WARNING: This API is experimental and might change in incompatible ways in the next release.

#### calculateQueryParams

    protected ModifiableSolrParams calculateQueryParams(Set<String> queryParamNames,
                                                        ModifiableSolrParams wparams)

#### createMethod

    protected org.apache.http.client.methods.HttpRequestBase createMethod(SolrRequest request,
                                                                          String collection)
                                                                   throws IOException,
                                                                          SolrServerException

Throws:
  `IOException`
  `SolrServerException`

#### executeMethod

    protected NamedList<Object> executeMethod(org.apache.http.client.methods.HttpRequestBase method,
                                              ResponseParser processor,
                                              boolean isV2Api)
                                       throws SolrServerException

Throws:
  `SolrServerException`

#### getInvariantParams

    public ModifiableSolrParams getInvariantParams()

Retrieve the default list of parameters are added to every request regardless.

See Also:
  `invariantParams`

#### getBaseURL

    public String getBaseURL()

#### setBaseURL

    public void setBaseURL(String baseURL)

Change the base-url used when sending requests to Solr. Two different paths can be specified as a part of this URL: 1) A path pointing directly at a particular core

       httpSolrClient.setBaseURL("http://my-solr-server:8983/solr/core1");
       QueryResponse resp = httpSolrClient.query(new SolrQuery("*:*"));

Note that when a core is provided in the base URL, queries and other requests can be made without mentioning the core explicitly. However, the client can only send requests to that core. 2) The path of the root Solr path ("/solr")

       httpSolrClient.setBaseURL("http://my-solr-server:8983/solr");
       QueryResponse resp = httpSolrClient.query("core1", new SolrQuery("*:*"));

In this case the client is more flexible and can be used to send requests to any cores. The cost of this is that the core must be specified on each request.

#### getParser

    public ResponseParser getParser()

#### setParser

    public void setParser(ResponseParser processor)

Note: This setter method is not thread-safe.

Parameters:
  `processor` - Default Response Parser chosen to parse the response if the parser were not specified as part of the request.
See Also:
  `SolrRequest.getResponseParser()`

#### getHttpClient

    public org.apache.http.client.HttpClient getHttpClient()

Return the HttpClient this instance uses.

#### setConnectionTimeout

    @Deprecated
    public void setConnectionTimeout(int timeout)

Deprecated. since 7.0 Use `HttpSolrClient.Builder` methods instead.
HttpConnectionParams.setConnectionTimeout

Parameters:
  `timeout` - Timeout in milliseconds

#### setSoTimeout

    @Deprecated
    public void setSoTimeout(int timeout)

Deprecated.
Set SoTimeout (read timeout). This is desirable for queries, but probably not for indexing.

Parameters:
  `timeout` - Timeout in milliseconds s * @deprecated since 7.0 Use `HttpSolrClient.Builder` methods instead.

#### setFollowRedirects

    public void setFollowRedirects(boolean followRedirects)

Configure whether the client should follow redirects or not.

This defaults to false under the assumption that if you are following a redirect to get to a Solr installation, something is misconfigured somewhere.

#### setRequestWriter

    public void setRequestWriter(RequestWriter requestWriter)

#### close

    public void close()
               throws IOException

Close the `HttpClientConnectionManager` from the internal client.

Throws:
  `IOException`

#### isUseMultiPartPost

    public boolean isUseMultiPartPost()

#### setUseMultiPartPost

    public void setUseMultiPartPost(boolean useMultiPartPost)

Set the multipart connection properties