final ResponseTrigger responseTrigger, final HttpContext context) throws HttpException, IOException { final Header h = request.getFirstHeader(HttpHeaders.AUTHORIZATION); final String challengeResponse = h != null ? authTokenExtractor.extract(h.getValue()) : null; final URIAuthority authority = request.getAuthority(); final String requestUri = request.getRequestUri(); final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue()); unauthorized.setEntity(new StringEntity("Unauthorized")); if (expectContinue || request.getEntity() == null) { EntityUtils.consume(request.getEntity()); } else { EntityUtils.consume(request.getEntity());
public Request addHeader(final String name, final String value) { this.request.addHeader(name, value); return this; }
protected ClassicHttpRequest makeRequestWithBody(final String method, final String requestUri) { final ClassicHttpRequest req = new BasicClassicHttpRequest(method, requestUri); final int nbytes = 128; req.setEntity(HttpTestUtils.makeBody(nbytes)); req.setHeader("Content-Length",""+nbytes); return req; }
return this; method = request.getMethod(); version = request.getVersion(); headerGroup.setHeaders(request.getHeaders()); final HttpEntity originalEntity = request.getEntity(); final ContentType contentType = EntityUtils.getContentType(originalEntity); if (contentType != null && uri = request.getUri(); } catch (final URISyntaxException ignore) {
if (proxy != null && !route.isTunnelled()) { try { URI uri = request.getUri(); if (!uri.isAbsolute()) { uri = URIUtils.rewriteURI(uri, target, true); request.setPath(uri.toASCIIString()); } catch (final URISyntaxException ex) { throw new ProtocolException("Invalid request URI: " + request.getRequestUri(), ex); final URIAuthority authority = request.getAuthority(); if (authority != null) { final CredentialsProvider credsProvider = context.getCredentialsProvider(); if (credsProvider instanceof CredentialsStore) { AuthSupport.extractFromAuthority(request.getScheme(), authority, (CredentialsStore) credsProvider); httpProcessor.process(request, request.getEntity(), context); if (!request.containsHeader(HttpHeaders.AUTHORIZATION)) { if (log.isDebugEnabled()) { log.debug("Target auth state: " + targetAuthExchange.getState()); if (!request.containsHeader(HttpHeaders.PROXY_AUTHORIZATION) && !route.isTunnelled()) { if (log.isDebugEnabled()) { log.debug("Proxy auth state: " + proxyAuthExchange.getState()); if (request.getMethod().equalsIgnoreCase(StandardMethods.TRACE.name())) { final HttpEntity requestEntity = request.getEntity();
@Test public void testReadRequestNoEntity() throws Exception { final String s = "POST /stuff HTTP/1.1\r\nUser-Agent: test\r\n\r\n"; final ByteArrayInputStream inStream = new ByteArrayInputStream(s.getBytes(StandardCharsets.US_ASCII)); Mockito.when(socket.getInputStream()).thenReturn(inStream); conn.bind(socket); Assert.assertEquals(0, conn.getEndpointDetails().getRequestCount()); final ClassicHttpRequest request = conn.receiveRequestHeader(); Assert.assertNotNull(request); Assert.assertEquals("/stuff", request.getPath()); Assert.assertEquals("POST", request.getMethod()); Assert.assertTrue(request.containsHeader("User-Agent")); Assert.assertNull(request.getEntity()); Assert.assertEquals(1, conn.getEndpointDetails().getRequestCount()); conn.receiveRequestEntity(request); final HttpEntity entity = request.getEntity(); Assert.assertNull(entity); }
Args.notNull(request, "HTTP request"); try { if (request.getScheme() == null && target != null) { request.setScheme(target.getSchemeName()); if (request.getAuthority() == null && target != null) { request.setAuthority(new URIAuthority(target));
@Override public ClassicHttpRequest copy(final ClassicHttpRequest original) { if (original == null) { return null; } final BasicClassicHttpRequest copy = new BasicClassicHttpRequest(original.getMethod(), original.getPath()); copy.setVersion(original.getVersion()); for (final Iterator<Header> it = original.headerIterator(); it.hasNext(); ) { copy.addHeader(it.next()); } copy.setScheme(original.getScheme()); copy.setAuthority(original.getAuthority()); copy.setEntity(original.getEntity()); return copy; }
@Test public void testBasicMessageParsing() throws Exception { final String s = "GET / HTTP/1.1\r\n" + "Host: localhost\r\n" + "User-Agent: whatever\r\n" + "Cookie: c1=stuff\r\n" + "\r\n"; final ByteArrayInputStream inputStream = new ByteArrayInputStream(s.getBytes(StandardCharsets.US_ASCII)); final SessionInputBuffer inBuffer = new SessionInputBufferImpl(16, StandardCharsets.US_ASCII.newDecoder()); final DefaultHttpRequestParser parser = new DefaultHttpRequestParser(); final ClassicHttpRequest httprequest = parser.parse(inBuffer, inputStream); Assert.assertEquals("GET", httprequest.getMethod()); Assert.assertEquals("/", httprequest.getPath()); final Header[] headers = httprequest.getHeaders(); Assert.assertEquals(3, headers.length); }
context.setAttribute(HttpClientContext.HTTP_REQUEST, request); final URIAuthority authority = request.getAuthority(); final String scheme = request.getScheme(); final HttpHost target = authority != null ? new HttpHost(scheme, authority) : route.getTargetHost(); final String via = generateViaHeader(request); request.addHeader("Via",via);
public ClassicHttpResponse execute( final HttpHost targetHost, final ClassicHttpRequest request, final HttpContext context) throws HttpException, IOException { final HttpRequester requester = this.requesterRef.get(); if (requester == null) { throw new IllegalStateException("Requester has not been started"); } if (request.getAuthority() == null) { request.setAuthority(new URIAuthority(targetHost)); } request.setScheme(targetHost.getSchemeName()); return requester.execute(targetHost, request, socketConfig.getSoTimeout(), context); }
@Test public void testForwardsUnknownHeadersOnRequestsFromHigherProtocolVersions() throws Exception { request = new BasicClassicHttpRequest("GET", "/foo"); request.setVersion(new ProtocolVersion("HTTP", 1, 2)); request.removeHeaders("Connection"); request.addHeader("X-Unknown-Header", "some-value"); final ClassicHttpRequest downgraded = new BasicClassicHttpRequest("GET", "/foo"); downgraded.setVersion(HttpVersion.HTTP_1_1); downgraded.removeHeaders("Connection"); downgraded.addHeader("X-Unknown-Header", "some-value"); EasyMock.expect( mockExecChain.proceed( eqRequest(downgraded), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(request); verifyMocks(); }
@Override protected void writeHeadLine( final ClassicHttpRequest message, final CharArrayBuffer lineBuf) throws IOException { final ProtocolVersion transportVersion = message.getVersion(); getLineFormatter().formatRequestLine(lineBuf, new RequestLine( message.getMethod(), message.getRequestUri(), transportVersion != null ? transportVersion : HttpVersion.HTTP_1_1)); }
try { if (config.isRedirectsEnabled() && this.redirectStrategy.isRedirected(request, response, context)) { final HttpEntity requestEntity = request.getEntity(); if (requestEntity != null && !requestEntity.isRepeatable()) { this.log.debug("Cannot redirect non-repeatable request"); case HttpStatus.SC_MOVED_TEMPORARILY: case HttpStatus.SC_SEE_OTHER: if (!StandardMethods.isSafe(request.getMethod())) { final HttpGet httpGet = new HttpGet(redirectUri); httpGet.setHeaders(originalRequest.getHeaders()); redirect = httpGet; } else {
poolEntry.assignConnection(connection); if (request.getAuthority() == null) { request.setAuthority(new URIAuthority(targetHost.getHostName(), targetHost.getPort()));
public Request version(final HttpVersion version) { this.request.setVersion(version); return this; }
@Test public void testViaHeaderOnRequestProperlyRecordsClientProtocol() throws Exception { final ClassicHttpRequest originalRequest = new BasicClassicHttpRequest("GET", "/"); originalRequest.setVersion(HttpVersion.HTTP_1_0); request = originalRequest; request.removeHeaders("Via"); final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(request); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); final String via = captured.getFirstHeader("Via").getValue(); final String protocol = via.split("\\s+")[0]; final String[] protoParts = protocol.split("/"); if (protoParts.length > 1) { Assert.assertTrue("http".equalsIgnoreCase(protoParts[0])); } Assert.assertEquals("1.0",protoParts[protoParts.length-1]); }