首页 > 解决方案 > 供应商通过透明代理请求

问题描述

我正在尝试使用提供程序的 HttpAsyncClient 通过透明的 Squid 代理发出请求。我正在按如下方式构建客户端。

HttpHost proxyHost = new HttpHost("myproxy.com", 2345);
UsernamePasswordCredentials basicCreds = new UsernamePasswordCredentials("username", "password");
CredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(AuthScope.ANY, basicCreds);
SSLContext context = SSLContext.getDefault();
Supplier<CloseableHttpAsyncClient> supplier = () -> HttpAsyncClientBuilder.create()
                    .setThreadFactory(ThreadUtils.newThreadFactory("test_service"))              
                    .setMaxConnPerRoute(1024)
                    .setMaxConnTotal(2048) 
                    .setSSLContext(context)
                    .setProxy(proxyHost)
                    .setDefaultCredentialsProvider(provider)
                    .build();

CloseableHttpAsyncClient client = (CloseableHttpAsyncClient) supplier.get();
HttpGet request = new HttpGet("example.com:port");
client.start();
Future<HttpResponse> future = client.execute(request, null);
HttpResponse response = future.get();

执行时出现“对等连接重置”,代理服务器上的评估日志中出现“错误:事务结束前标头”。我已经使用 OkHttpClient 看到了这种行为,并使用委托修复了它。在这种情况下,我看不到如何正确设置代理。

标签: javarestasynchronousproxy

解决方案


推荐阅读