@Test public void testRequestTargetHostInvalidInput() throws Exception { final RequestTargetHost interceptor = new RequestTargetHost(); try { interceptor.process(null, null, null); Assert.fail("IllegalArgumentException should have been thrown"); } catch (final IllegalArgumentException ex) { // expected } try { interceptor.process(new BasicClassicHttpRequest("GET", "/"), null, null); Assert.fail("IllegalArgumentException should have been thrown"); } catch (final IllegalArgumentException ex) { // expected } }
MinimalHttpClient(final HttpClientConnectionManager connManager) { super(); this.connManager = Args.notNull(connManager, "HTTP connection manager"); this.reuseStrategy = DefaultConnectionReuseStrategy.INSTANCE; this.schemePortResolver = DefaultSchemePortResolver.INSTANCE; this.requestExecutor = new HttpRequestExecutor(this.reuseStrategy); this.httpProcessor = new DefaultHttpProcessor( new RequestContent(), new RequestTargetHost(), new RequestClientConnControl(), new RequestUserAgent(VersionInfo.getSoftwareInfo( "Apache-HttpClient", "org.apache.hc.client5", getClass()))); }
@Override public void process( final HttpRequest request, final EntityDetails entity, final HttpContext context) throws HttpException, IOException { Args.notNull(context, "HTTP context"); final ProtocolVersion ver = context.getProtocolVersion(); if (ver.getMajor() < 2) { super.process(request, entity, context); } }
/** * Creates {@link HttpProcessorBuilder} initialized with default protocol interceptors * for client side HTTP/1.1 processing. * * @param agentInfo the agent info text or {@code null} for default. * @return the processor builder. */ public static HttpProcessorBuilder customClient(final String agentInfo) { return HttpProcessorBuilder.create() .addAll( new RequestContent(), new RequestTargetHost(), new RequestConnControl(), new RequestUserAgent(!TextUtils.isBlank(agentInfo) ? agentInfo : VersionInfo.getSoftwareInfo(SOFTWARE, "org.apache.hc.core5", HttpProcessors.class)), new RequestExpectContinue()); }
@Test public void testRequestTargetHostMissingHostHTTP11() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); final RequestTargetHost interceptor = new RequestTargetHost(); try { interceptor.process(request, request.getEntity(), context); Assert.fail("ProtocolException should have been thrown"); } catch (final ProtocolException ex) { // expected } }
/** * Creates {@link HttpProcessorBuilder} initialized with default protocol interceptors * for client side HTTP/1.1 processing. * * @param agentInfo the agent info text or {@code null} for default. * @return the processor builder. */ public static HttpProcessorBuilder customClient(final String agentInfo) { return HttpProcessorBuilder.create() .addAll( new RequestContent(), new RequestTargetHost(), new RequestConnControl(), new RequestUserAgent(!TextUtils.isBlank(agentInfo) ? agentInfo : VersionInfo.getSoftwareInfo(SOFTWARE, "org.apache.hc.core5", HttpProcessors.class)), new RequestExpectContinue()); }
@Test public void testRequestTargetHostMissingHostHTTP10() throws Exception { final HttpContext context = new BasicHttpContext(null); context.setProtocolVersion(HttpVersion.HTTP_1_0); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); final RequestTargetHost interceptor = new RequestTargetHost(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.HOST); Assert.assertNull(header); }
/** * @since 5.0 */ 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(); }
@Test public void testRequestTargetHostConnectHttp10() throws Exception { final HttpContext context = new BasicHttpContext(null); context.setProtocolVersion(HttpVersion.HTTP_1_0); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("CONNECT", "/"); request.setAuthority(new URIAuthority("somehost", 8080)); final RequestTargetHost interceptor = new RequestTargetHost(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.HOST); Assert.assertNull(header); }
@Test public void testBuildChain() throws Exception { final ChainBuilder<HttpRequestInterceptor> cb = new ChainBuilder<>(); final HttpRequestInterceptor i1 = new RequestContent(); final HttpRequestInterceptor i2 = new RequestTargetHost(); final HttpRequestInterceptor i3 = new RequestConnControl(); final HttpRequestInterceptor i4 = new RequestUserAgent(); final HttpRequestInterceptor i5 = new RequestExpectContinue(); cb.addFirst(i1); cb.addAllFirst(i2, i3); cb.addFirst(null); cb.addAllFirst((List<HttpRequestInterceptor>) null); cb.addLast(i4); cb.addLast(null); cb.addAllLast(i5); cb.addAllLast((List<HttpRequestInterceptor>) null); cb.addFirst(i1); cb.addAllLast(i3, i4, i5); final LinkedList<HttpRequestInterceptor> list = cb.build(); Assert.assertNotNull(list); Assert.assertEquals(5, list.size()); Assert.assertSame(i1, list.get(0)); Assert.assertSame(i2, list.get(1)); Assert.assertSame(i3, list.get(2)); Assert.assertSame(i4, list.get(3)); Assert.assertSame(i5, list.get(4)); }
@Test public void testRequestTargetHostGenerated() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.setAuthority(new URIAuthority("somehost", 8080)); final RequestTargetHost interceptor = new RequestTargetHost(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.HOST); Assert.assertNotNull(header); Assert.assertEquals("somehost:8080", header.getValue()); }
new ConnectExec( reuseStrategyCopy, new DefaultHttpProcessor(new RequestTargetHost(), new RequestUserAgent(userAgentCopy)), proxyAuthStrategyCopy), ChainElements.CONNECT.name()); new RequestDefaultHeaders(defaultHeaders), new RequestContent(), new RequestTargetHost(), new RequestClientConnControl(), new RequestUserAgent(userAgentCopy),
@Test public void testRequestTargetHostConnectHttp11() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("CONNECT", "/"); request.setAuthority(new URIAuthority("somehost", 8080)); final RequestTargetHost interceptor = new RequestTargetHost(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.HOST); Assert.assertNotNull(header); Assert.assertEquals("somehost:8080", header.getValue()); }
new DefaultHttpProcessor(new RequestTargetHost(), new RequestUserAgent(userAgentCopy)), proxyAuthStrategyCopy), ChainElements.CONNECT.name());
@Test public void testRequestTargetHostNotGenerated() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.setAuthority(new URIAuthority("somehost", 8080)); request.addHeader(new BasicHeader(HttpHeaders.HOST, "whatever")); final RequestTargetHost interceptor = new RequestTargetHost(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.HOST); Assert.assertNotNull(header); Assert.assertEquals("whatever", header.getValue()); }
new DefaultHttpProcessor(new RequestTargetHost(), new RequestUserAgent(userAgentCopy)), proxyAuthStrategyCopy), ChainElements.CONNECT.name());