Привет всем, я так безнадежен, поэтому спросите вас, ребята. Я пытаюсь сделать простой HTTP-запрос, но с моими прокси-серверами я получаю код ошибки 407. Я использую Unirest и Java 8.
Unirest.config().proxy(host, port, usernameProxy, passwordProxy);
HttpResponse<JsonNode> response = Unirest.post(url).asJson();
String body = response.getBody().toString();
Вот и все, мой URL приватный, но я написал так: "https://myurl.com/?param1=param¶m2.... Он работает без прокси, но я застрял с прокси. Большое спасибо




Похоже, что прокси-сервер ожидает учетные данные прокси-сервера в заголовках, которые Unirest, похоже, не распространяются.
Заголовок должен специально содержать ключ "Proxy-Authorization", чтобы даже началось рукопожатие.
String proxyCred= "user:password";
String baseCred= Base64.getEncoder().encodeToString(proxyCred.getBytes());
HttpHeaders headers = new HttpHeaders();
headers.add("Proxy-Authorization", "Basic " + baseCred); // the proxy server needs this
В этом решении используется механизм Basic; Это может не сработать, так как прокси может ожидать другой тип аутентификации. Вы узнаете, какой из них, прочитав заголовок Proxy-Authenticate в ответе сервера.
Если соединение не защищено (HTTP, а не HTTPS), вы можете прочитать ответ, перехватив пакет с помощью какого-либо инструмента, такого как WireShark. Как только вы найдете 407 packet, вы можете прочитать значение Proxy-Authenticate и изменить свой метод авторизации в соответствии с этим.