Я создаю соединение для отправки GET в стороннюю систему. По различным соображениям безопасности я использую Squid в качестве промежуточного сервера.
Сначала я создаю запрос:
var reqBuilder = new RequestBuilder(GET);
reqBuilder.setUrl(url);
Затем я создаю Realm с именем пользователя и паролем:
var realm = new Realm.Builder(proxyUser, proxySecret)
.setScheme(Realm.AuthScheme.BASIC);
var proxy = new ProxyServer.Builder(proxyHost, proxyPort)
.setSecuredPort(proxyPort)
.setProxyType(ProxyType.HTTP)
.setRealm(realm));
reqBuilder.setProxyServer(proxy);
(Здесь ProxyHost и ProxyPort — это IP-порт Squid.)
Это работает, поскольку мы видим, что сторонний сервер получает GET, как и ожидалось.
Наконец, я создаю сам запрос и отправляю его асинхронно.
Request request = reqBuilder.build();
asyncHttpClient.executeRequest(request);
(все подробности не показаны, я не думаю, что проблема связана с asyncHttpClient)
Кажется, что происходит то, что первый запрос открывает соединение со Squid и сохраняет это соединение открытым. При первом подключении он отправляет необходимые заголовки, чтобы произошла базовая аутентификация. При последующих запросах он, кажется, не отправляет базовую аутентификацию... но Squid хочет, чтобы эти данные были при каждом отдельном запросе.
Есть ли способ попросить прокси-сервер Java всегда отправлять информацию об основной аутентификации?
Подробности, соответствующий импорт:
import org.asynchttpclient.Realm;
import org.asynchttpclient.Request;
import org.asynchttpclient.RequestBuilder;
import org.asynchttpclient.proxy.ProxyServer;
import org.asynchttpclient.proxy.ProxyType;
Подробнее здесь: https://stackoverflow.com/questions/786 ... message-to