public ProxyClient(
final HttpConnectionFactory<ManagedHttpClientConnection> connFactory,
final H1Config h1Config,
final CharCodingConfig charCodingConfig,
final RequestConfig requestConfig) {
super();
this.connFactory = connFactory != null ? connFactory : new ManagedHttpClientConnectionFactory(h1Config, charCodingConfig, null, null);
this.requestConfig = requestConfig != null ? requestConfig : RequestConfig.DEFAULT;
this.httpProcessor = new DefaultHttpProcessor(
new RequestTargetHost(), new RequestClientConnControl(), new RequestUserAgent());
this.requestExec = new HttpRequestExecutor();
this.proxyAuthStrategy = new DefaultAuthenticationStrategy();
this.authenticator = new HttpAuthenticator();
this.proxyAuthExchange = new AuthExchange();
this.authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
.register(AuthSchemes.BASIC.ident, new BasicSchemeFactory())
.register(AuthSchemes.DIGEST.ident, new DigestSchemeFactory())
.register(AuthSchemes.NTLM.ident, new NTLMSchemeFactory())
.register(AuthSchemes.SPNEGO.ident,
new SPNegoSchemeFactory(KerberosConfig.DEFAULT, SystemDefaultDnsResolver.INSTANCE))
.register(AuthSchemes.KERBEROS.ident,
new KerberosSchemeFactory(KerberosConfig.DEFAULT, SystemDefaultDnsResolver.INSTANCE))
.build();
this.reuseStrategy = new DefaultConnectionReuseStrategy();
}