407 Ошибка аутентификации прокси-сервера — Unirest Java 8

Привет всем, я так безнадежен, поэтому спросите вас, ребята. Я пытаюсь сделать простой 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&param2.... Он работает без прокси, но я застрял с прокси. Большое спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
755
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что прокси-сервер ожидает учетные данные прокси-сервера в заголовках, которые 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 и изменить свой метод авторизации в соответствии с этим.

Другие вопросы по теме