HttpClient - когда использовать параметр HttpHost при выполнении HttpRequest - PullRequest
0 голосов
/ 02 января 2019

При использовании следующего кода:

URIBuilder uriBuilder = new URIBuilder(url);
HttpPost httpRequest= new HttpPost(uriBuilder.build());
HttpHost httpHost= new HttpHost(uriBuilder.getHost(), uriBuilder.getPort(), uriBuilder.getScheme());

Когда рекомендуется использовать

httpClient.execute(httpHost, httpRequest);

Поскольку хост httpHost можно определить с помощью HttpRequest, который включает в себя URL

/**
 * Executes HTTP request using the default context.
 *
 * @param target    the target host for the request.
 *                  Implementations may accept {@code null}
 *                  if they can still determine a route, for example
 *                  to a default target or by inspecting the request.
 * @param request   the request to execute
 *
 * @return  the response to the request. This is always a final response,
 *          never an intermediate response with an 1xx status code.
 *          Whether redirects or authentication challenges will be returned
 *          or handled automatically depends on the implementation and
 *          configuration of this client.
 * @throws IOException in case of a problem or the connection was aborted
 * @throws ClientProtocolException in case of an http protocol error
 */
HttpResponse execute(HttpHost target, HttpRequest request)

Есть ли какая-либо выгода от звонка

httpClient.execute(httpRequest);

Это решение, связанное с прокси / брандмауэром / балансировщиком?Когда хост будет отличаться от хоста URL?

1 Ответ

0 голосов
/ 02 января 2019

Из документов,

Реализации могут принимать ноль, если они все еще могут определить маршрут, например, к цели по умолчанию или путем проверки запроса .

Ваш вопрос

Хост httpHost может быть определен HttpRequest, который включает URL

просто перефразирует то, что написано в документах.

Нет смысла называть одно над другим в вашем случае. Но для расширенных конфигураций вы можете ссылаться на this , где явно вам может понадобиться использовать HTTPHost. Надеюсь, это поможет!

...