Как определить настройки прокси в новом Algolia API v3 без свойств системы - PullRequest
0 голосов
/ 26 мая 2020

Я использую клиент Algolia 3.9.0 под Java 8.

В соответствии с рекомендациями docs вам необходимо настроить параметры прокси, используя системные свойства. Я предпочитаю не использовать этот механизм, потому что свойства могут мешать свойствам других компонентов, так как они также могут устанавливать те же свойства ( Подробнее о ). Есть ли способ установить значения, как в клиенте v2?

 client.setProxy(new HttpHost(conf.getProxyHost(), conf.getProxyPort())); 

1 Ответ

1 голос
/ 28 мая 2020

Чтобы он работал так, как вы хотите, вы должны создать собственный HttpRequester, позже создать его экземпляр с новым HttpClient, используя HttpClientConfiguration с конфигурацией вашего прокси, вот рабочий код:

Класс MyCustomRequester:

public class MyCustomRequester implements HttpRequester {

    private final HttpClient httpClient;

    public MyCustomRequester(HttpClient httpClient) {
        this.httpClient = httpClient;
    }

    @Override
    public CompletableFuture<HttpResponse> performRequestAsync(HttpRequest request) {
        return ... httpClient.execute(...) ...;
    }

    @Override
    public void close() throws IOException {
   ...
    }

}

основной метод тестирования:

public static void main(String[] args) {
    SearchConfig config = new SearchConfig
            .Builder("undefined", "undefined").build();

    HttpClientConfiguration httpClientConfiguration = new HttpClientConfiguration();
    httpClientConfiguration.setProxyHost("host");
    httpClientConfiguration.setProxyPort(2020);

    HttpClient httpClient = // create a new httpClient with custom httpClientConfiguration;
    ...
    SearchClient client = new SearchClient(config, myCustomRequester);
}

Если вы хотите внедрить свой собственный HttpClient, вы можете внедрить его конструктором во все клиентские классы библиотеки . Последний должен реализовать интерфейс HttpRequester. В этом случае вам больше не нужна зависимость algoliasearch- apache.

Подробнее см. Эту документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...