private static Request transformRequest(HttpRequest request, Object tag) { Request.Builder builder = new Request.Builder(); RequestLine requestLine = request.getRequestLine(); String method = requestLine.getMethod(); builder.url(requestLine.getUri()); String contentType = null; for (Header header : request.getAllHeaders()) { String name = header.getName(); if ("Content-Type".equals(name)) { contentType = header.getValue(); } else { builder.header(name, header.getValue()); } } RequestBody body = null; if (request instanceof HttpEntityEnclosingRequest) { HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity(); if (entity != null) { // Wrap the entity in a custom Body which takes care of the content, length, and type. body = new HttpEntityBody(entity, contentType); Header encoding = entity.getContentEncoding(); if (encoding != null) { builder.header(encoding.getName(), encoding.getValue()); } } } builder.method(method, body); builder.tag(tag); return builder.build(); }
public HttpRequest newHttpRequest(final RequestLine requestline) throws MethodNotSupportedException { if (requestline == null) { throw new IllegalArgumentException("Request line may not be null"); } String method = requestline.getMethod(); String uri = requestline.getUri(); return newHttpRequest(method, uri); }
public BasicHttpRequest(final RequestLine requestline) { super(); if (requestline == null) { throw new IllegalArgumentException("Request line may not be null"); } this.requestline = requestline; this.method = requestline.getMethod(); this.uri = requestline.getUri(); }
@Override public HttpUriRequest getRedirect(HttpRequest request, HttpResponse response, HttpContext context) throws ProtocolException { RequestLine line = request.getRequestLine(); String location = getLocation(request, response, context).toString(); Log.i( TAG, "Following redirection: " + line.getMethod() + " " + line.getUri() + " -> " + location); return RequestBuilder.copy(request) .setUri(location) .removeHeaders( "Content-Length") // Content-Length will be set again automatically, if required; // remove it now to avoid duplicate header .build(); }
@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 SessionInputBuffer inbuffer = new SessionInputBufferMock(s, Consts.ASCII); final DefaultHttpRequestParser parser = new DefaultHttpRequestParser(inbuffer); final HttpRequest httprequest = parser.parse(); final RequestLine reqline = httprequest.getRequestLine(); Assert.assertNotNull(reqline); Assert.assertEquals("GET", reqline.getMethod()); Assert.assertEquals("/", reqline.getUri()); Assert.assertEquals(HttpVersion.HTTP_1_1, reqline.getProtocolVersion()); final Header[] headers = httprequest.getAllHeaders(); Assert.assertEquals(3, headers.length); }
@Test public void testMessageParsingTimeout() throws Exception { final String s = "GET \000/ HTTP/1.1\r\000\n" + "Host: loca\000lhost\r\n" + "User-Agent: whatever\r\n" + "Coo\000kie: c1=stuff\r\n" + "\000\r\n"; final SessionInputBuffer inbuffer = new SessionInputBufferMock(new TimeoutByteArrayInputStream(s.getBytes(Consts.ASCII)), 16); final DefaultHttpRequestParser parser = new DefaultHttpRequestParser(inbuffer); int timeoutCount = 0; HttpRequest httprequest = null; for (int i = 0; i < 10; i++) { try { httprequest = parser.parse(); break; } catch (final InterruptedIOException ex) { timeoutCount++; } } Assert.assertNotNull(httprequest); Assert.assertEquals(5, timeoutCount); @SuppressWarnings("null") // httprequest cannot be null here final RequestLine reqline = httprequest.getRequestLine(); Assert.assertNotNull(reqline); Assert.assertEquals("GET", reqline.getMethod()); Assert.assertEquals("/", reqline.getUri()); Assert.assertEquals(HttpVersion.HTTP_1_1, reqline.getProtocolVersion()); final Header[] headers = httprequest.getAllHeaders(); Assert.assertEquals(3, headers.length); }
/* Assert.asserts that the components of two request lines match. */ public static boolean equivalent(RequestLine l1, RequestLine l2) { return (l1.getMethod().equals(l2.getMethod()) && l1.getProtocolVersion().equals(l2.getProtocolVersion()) && l1.getUri().equals(l2.getUri())); }