Я пытаюсь получить доступ к удаленному серверу через туннель SSH, чтобы получить некоторые запросы отдыха.Я настроил динамический прокси через замазку для прокси трафика на удаленный сервер.Это работает, как и ожидалось, с использованием браузеров для доступа к удаленным службам.
Я создал прокси Resttemplate, чтобы использовать мой локальный динамический прокси для подключения к удаленной службе через SSH-туннелирование.Проблема, с которой я столкнулся, заключается в том, что мое приложение не может разрешить удаленный DNS, чтобы найти удаленный сервер.Следовательно, я получаю java.net.UnkonwnHostException
ошибку.Я знаю, что при доступе через браузер обычно есть свойство, которое должно быть установлено для включения прокси для DNS-запросов.Я не уверен, есть ли такая вещь для настройки прокси Spring Boot Resttemplate.Пожалуйста, найдите мой код настройки прокси следующим образом.
@Configuration
public class ProxyCustomizer implements RestTemplateCustomizer {
@Autowired
private ProxyConfig proxyConfig;
@Override
public void customize(RestTemplate restTemplate) {
if (proxyConfig == null) return;
HttpHost proxy = new HttpHost(proxyConfig.getHostname(), proxyConfig.getPort());
HttpClient httpClient = HttpClientBuilder.create()
.setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {
@Override
public HttpHost determineProxy(HttpHost target,
HttpRequest request, HttpContext context)
throws HttpException {
return super.determineProxy(target, request, context);
}
}).build();
restTemplate.setRequestFactory(
new HttpComponentsClientHttpRequestFactory(httpClient));
}
}
Я также пытался использовать свойства системы Socks и HTTP-прокси, но она не работала:
Socks:
System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "socksProxyHost", "127.0.0.1" );
System.getProperties().put( "socksProxyPort", "9001" );
HTTP-прокси:
props.put("http.proxyHost", "127.0.0.1");
props.put("http.proxyPort", "9001");
props.put("https.proxyHost", "127.0.0.1");
props.put("https.proxyPort", "9001");