Я пытаюсь подключиться к серверу через PROXY и получить содержимое html. Для этого я использую java HttpClient (для http и https url). Я могу успешно сканировать с помощью curl , где HttpClient создает исключение SocketTimeoutException.
Код HttpClient:
httpclient = HttpClientBuilder.create().build();
String domain = HttpUtil.getDomainName(url);
Proxy pData = <proxy object>
HttpHost proxyHost = new HttpHost(pData.getProxy(), Integer.parseInt(pData.getPort()));
RequestConfig.Builder configBuilder = RequestConfig.custom()
.setProxy(proxy)
.setConnectTimeout(40 * 1000)
.setSocketTimeout(40 * 1000)
.setConnectionRequestTimeout(40 * 1000)
.setCookieSpec("Standard");
RequestConfig config = configBuilder.build();
CredentialsProvider credentialProvider = new BasicCredentialsProvider();
AuthScope as = new AuthScope(pData.getProxy(), Integer.parseInt(pData.getPort()));
credentialProvider.setCredentials(as, new UsernamePasswordCredentials(pData.getUsername(), pData.getPassword()));
HttpClientContext context = HttpClientContext.create();
context.setUserToken(UUID.randomUUID().toString());
context.setCredentialsProvider(credentialProvider);
context.setRequestConfig(config);
HttpGet request = new HttpGet(url);
List<Pair<String, String>> headers = pData.getHeaders();
HttpUtil.populateHeaders(request, headers);
request.setConfig(config);
CloseableHttpResponse response = httpclient.execute(request, context);
Команда curl:
curl --verbose -k <target url> -H <list of headers> --proxy <proxy url with authentication> --compressed
Может кто-нибудь помочь мне понять, в чем заключается ошибка в коде HttpClient?