Search in sources :

Example 1 with HeaderIterator

use of org.apache.http.HeaderIterator in project robovm by robovm.

the class ResponseProcessCookies method process.

public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException {
    if (response == null) {
        throw new IllegalArgumentException("HTTP request may not be null");
    }
    if (context == null) {
        throw new IllegalArgumentException("HTTP context may not be null");
    }
    // Obtain cookie store
    CookieStore cookieStore = (CookieStore) context.getAttribute(ClientContext.COOKIE_STORE);
    if (cookieStore == null) {
        this.log.info("Cookie store not available in HTTP context");
        return;
    }
    // Obtain actual CookieSpec instance
    CookieSpec cookieSpec = (CookieSpec) context.getAttribute(ClientContext.COOKIE_SPEC);
    if (cookieSpec == null) {
        this.log.info("CookieSpec not available in HTTP context");
        return;
    }
    // Obtain actual CookieOrigin instance
    CookieOrigin cookieOrigin = (CookieOrigin) context.getAttribute(ClientContext.COOKIE_ORIGIN);
    if (cookieOrigin == null) {
        this.log.info("CookieOrigin not available in HTTP context");
        return;
    }
    HeaderIterator it = response.headerIterator(SM.SET_COOKIE);
    processCookies(it, cookieSpec, cookieOrigin, cookieStore);
    // see if the cookie spec supports cookie versioning.
    if (cookieSpec.getVersion() > 0) {
        // process set-cookie2 headers.
        // Cookie2 will replace equivalent Cookie instances
        it = response.headerIterator(SM.SET_COOKIE2);
        processCookies(it, cookieSpec, cookieOrigin, cookieStore);
    }
}
Also used : CookieStore(org.apache.http.client.CookieStore) CookieSpec(org.apache.http.cookie.CookieSpec) HeaderIterator(org.apache.http.HeaderIterator) CookieOrigin(org.apache.http.cookie.CookieOrigin)

Example 2 with HeaderIterator

use of org.apache.http.HeaderIterator in project robolectric by robolectric.

the class TestHttpResponseTest method shouldSupportHeaderIterator.

@Test
public void shouldSupportHeaderIterator() throws Exception {
    HttpResponse resp = new TestHttpResponse(304, "REDIRECTED", new BasicHeader("Location", "http://bar.com"), new BasicHeader("Location", "http://zombo.com"));
    HeaderIterator it = resp.headerIterator();
    assertThat(it.hasNext()).isTrue();
    assertThat(it.nextHeader().getValue()).isEqualTo("http://bar.com");
    assertThat(it.nextHeader().getValue()).isEqualTo("http://zombo.com");
    assertThat(it.hasNext()).isFalse();
}
Also used : TestHttpResponse(org.robolectric.shadows.httpclient.TestHttpResponse) TestHttpResponse(org.robolectric.shadows.httpclient.TestHttpResponse) HttpResponse(org.apache.http.HttpResponse) HeaderIterator(org.apache.http.HeaderIterator) BasicHeader(org.apache.http.message.BasicHeader) Test(org.junit.Test)

Example 3 with HeaderIterator

use of org.apache.http.HeaderIterator in project platform_external_apache-http by android.

the class DefaultConnectionReuseStrategy method keepAlive.

// see interface ConnectionReuseStrategy
public boolean keepAlive(final HttpResponse response, final HttpContext context) {
    if (response == null) {
        throw new IllegalArgumentException("HTTP response may not be null.");
    }
    if (context == null) {
        throw new IllegalArgumentException("HTTP context may not be null.");
    }
    HttpConnection conn = (HttpConnection) context.getAttribute(ExecutionContext.HTTP_CONNECTION);
    if (conn != null && !conn.isOpen())
        return false;
    // do NOT check for stale connection, that is an expensive operation
    // Check for a self-terminating entity. If the end of the entity will
    // be indicated by closing the connection, there is no keep-alive.
    HttpEntity entity = response.getEntity();
    ProtocolVersion ver = response.getStatusLine().getProtocolVersion();
    if (entity != null) {
        if (entity.getContentLength() < 0) {
            if (!entity.isChunked() || ver.lessEquals(HttpVersion.HTTP_1_0)) {
                // encoded, the connection cannot be reused
                return false;
            }
        }
    }
    // Check for the "Connection" header. If that is absent, check for
    // the "Proxy-Connection" header. The latter is an unspecified and
    // broken but unfortunately common extension of HTTP.
    HeaderIterator hit = response.headerIterator(HTTP.CONN_DIRECTIVE);
    if (!hit.hasNext())
        hit = response.headerIterator("Proxy-Connection");
    if (hit.hasNext()) {
        try {
            TokenIterator ti = createTokenIterator(hit);
            boolean keepalive = false;
            while (ti.hasNext()) {
                final String token = ti.nextToken();
                if (HTTP.CONN_CLOSE.equalsIgnoreCase(token)) {
                    return false;
                } else if (HTTP.CONN_KEEP_ALIVE.equalsIgnoreCase(token)) {
                    // continue the loop, there may be a "close" afterwards
                    keepalive = true;
                }
            }
            if (keepalive)
                return true;
        // neither "close" nor "keep-alive", use default policy
        } catch (ParseException px) {
            // we don't have logging in HttpCore, so the exception is lost
            return false;
        }
    }
    // default since HTTP/1.1 is persistent, before it was non-persistent
    return !ver.lessEquals(HttpVersion.HTTP_1_0);
}
Also used : HttpEntity(org.apache.http.HttpEntity) TokenIterator(org.apache.http.TokenIterator) BasicTokenIterator(org.apache.http.message.BasicTokenIterator) HttpConnection(org.apache.http.HttpConnection) HeaderIterator(org.apache.http.HeaderIterator) ParseException(org.apache.http.ParseException) ProtocolVersion(org.apache.http.ProtocolVersion)

Example 4 with HeaderIterator

use of org.apache.http.HeaderIterator in project platform_external_apache-http by android.

the class HttpOptions method getAllowedMethods.

public Set<String> getAllowedMethods(final HttpResponse response) {
    if (response == null) {
        throw new IllegalArgumentException("HTTP response may not be null");
    }
    HeaderIterator it = response.headerIterator("Allow");
    Set<String> methods = new HashSet<String>();
    while (it.hasNext()) {
        Header header = it.nextHeader();
        HeaderElement[] elements = header.getElements();
        for (HeaderElement element : elements) {
            methods.add(element.getName());
        }
    }
    return methods;
}
Also used : Header(org.apache.http.Header) HeaderElement(org.apache.http.HeaderElement) HeaderIterator(org.apache.http.HeaderIterator) HashSet(java.util.HashSet)

Example 5 with HeaderIterator

use of org.apache.http.HeaderIterator in project dropwizard by dropwizard.

the class HttpClientBuilderTest method usesDefaultForNonPersistentConnections.

@Test
public void usesDefaultForNonPersistentConnections() throws Exception {
    configuration.setKeepAlive(Duration.seconds(1));
    assertThat(builder.using(configuration).createClient(apacheBuilder, connectionManager, "test")).isNotNull();
    final Field field = FieldUtils.getField(httpClientBuilderClass, "keepAliveStrategy", true);
    final DefaultConnectionKeepAliveStrategy strategy = (DefaultConnectionKeepAliveStrategy) field.get(apacheBuilder);
    final HttpContext context = mock(HttpContext.class);
    final HttpResponse response = mock(HttpResponse.class);
    final HeaderIterator iterator = new BasicListHeaderIterator(ImmutableList.of(new BasicHeader(HttpHeaders.CONNECTION, "timeout=50")), HttpHeaders.CONNECTION);
    when(response.headerIterator(HTTP.CONN_KEEP_ALIVE)).thenReturn(iterator);
    assertThat(strategy.getKeepAliveDuration(response, context)).isEqualTo(50000);
}
Also used : Field(java.lang.reflect.Field) DefaultConnectionKeepAliveStrategy(org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy) BasicHttpContext(org.apache.http.protocol.BasicHttpContext) HttpContext(org.apache.http.protocol.HttpContext) BasicListHeaderIterator(org.apache.http.message.BasicListHeaderIterator) HttpResponse(org.apache.http.HttpResponse) HeaderIterator(org.apache.http.HeaderIterator) BasicListHeaderIterator(org.apache.http.message.BasicListHeaderIterator) BasicHeader(org.apache.http.message.BasicHeader) Test(org.junit.Test)

Aggregations

HeaderIterator (org.apache.http.HeaderIterator)13 Header (org.apache.http.Header)4 HttpEntity (org.apache.http.HttpEntity)4 HttpResponse (org.apache.http.HttpResponse)4 HashSet (java.util.HashSet)3 HeaderElement (org.apache.http.HeaderElement)3 HttpConnection (org.apache.http.HttpConnection)3 ParseException (org.apache.http.ParseException)3 ProtocolVersion (org.apache.http.ProtocolVersion)3 TokenIterator (org.apache.http.TokenIterator)3 CookieStore (org.apache.http.client.CookieStore)3 CookieOrigin (org.apache.http.cookie.CookieOrigin)3 CookieSpec (org.apache.http.cookie.CookieSpec)3 BasicHeader (org.apache.http.message.BasicHeader)3 BasicTokenIterator (org.apache.http.message.BasicTokenIterator)3 Test (org.junit.Test)3 TestHttpResponse (org.robolectric.shadows.httpclient.TestHttpResponse)2 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1