Установите аутентификацию для прокси -проксиселектораJAVA

Программисты JAVA общаются здесь
Anonymous
Установите аутентификацию для прокси -проксиселектора

Сообщение Anonymous »

Я использую SOAP для вызова API, и я не могу использовать RestTemplate, поэтому я нашел способ использования ProxySelector.
Но когда мой прокси поставлен Auth (имя пользователя /пароль). Я не могу использовать SOAP с ProxySelector, хотя я также установил Authenticator в ProxySelector.
Я получаю сообщение: http Transport Error: java.io.ioexception: невозможно провести туннель через прокси. Прокси возвращает «http /1.1 407 Прокси -аутентификация».
Я уверен, что мое имя пользователя и пароль для моего прокси -сервера верны
ниже мой код, пожалуйста, помогите мне. TKS для много < /p>

Код: Выделить всё

@Component
@Slf4j
public class CustomProxySelector extends ProxySelector {

private ProxySelector def;

private final List proxies = new ArrayList();

@Value("${proxy-host:#{null}}")
private String proxyHost;

@Value("${proxy-port:#{null}}")
private Integer proxyPort;

@Value("${proxy-username:#{null}}")
private String username;

@Value("${proxy-password:#{null}}")
private String password;

@Value("${api}")
private String api;

@Value("${proxy.enable:false}")
private boolean proxy;

@PostConstruct
public void init() {
this.def = ProxySelector.getDefault();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, (null == proxyPort) ? 80 : proxyPort));
this.proxies.add(proxy);
ProxySelector.setDefault(this);

Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
});
}

@Override
public List select(URI uri) {

if (StringUtils.compare(uri.toString(), this.api) == 0 && Boolean.TRUE.equals(this.enableProxy)) {
log.info(logString, uri, this.proxies);
return this.proxies;
}

log.info(logString, uri, def.select(uri));
return def.select(uri);
}

@Override
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
log.info("Failed to connect to a proxy ({}) when connecting to {}", sa, uri.getHost());

if (sa == null || ioe == null) {
throw new IllegalArgumentException("Arguments can't be null.");
}

def.connectFailed(uri, sa, ioe);
}
}
Я хочу найти решение


Подробнее здесь: https://stackoverflow.com/questions/795 ... xyselector

Вернуться в «JAVA»