Example usage for org.apache.http.client.params ClientPNames HANDLE_REDIRECTS

List of usage examples for org.apache.http.client.params ClientPNames HANDLE_REDIRECTS

Introduction

In this page you can find the example usage for org.apache.http.client.params ClientPNames HANDLE_REDIRECTS.

Prototype

String HANDLE_REDIRECTS

To view the source code for org.apache.http.client.params ClientPNames HANDLE_REDIRECTS.

Click Source Link

Document

Defines whether redirects should be handled automatically

This parameter expects a value of type Boolean .

Usage

From source file:org.callimachusproject.client.HttpClientFactoryTest.java

@Test
public void test302CachedRedirectTarget() throws Exception {
    do {/* ww w.  j  ava2s . c o m*/
        HttpGet get = new HttpGet("http://example.com/302");
        get.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true);
        BasicHttpResponse redirect = new BasicHttpResponse(_302);
        redirect.setHeader("Location", "http://example.com/200");
        redirect.setHeader("Cache-Control", "public,max-age=3600");
        responses.add(redirect);
        BasicHttpResponse doc = new BasicHttpResponse(_200);
        doc.setHeader("Cache-Control", "public,max-age=3600");
        responses.add(doc);
        client.execute(get, new ResponseHandler<Void>() {
            public Void handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
                assertEquals(_200.getStatusCode(), response.getStatusLine().getStatusCode());
                return null;
            }
        });
    } while (false);
    do {
        HttpContext localContext = new BasicHttpContext();
        HttpGet get = new HttpGet("http://example.com/302");
        get.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false);
        BasicHttpResponse redirect = new BasicHttpResponse(_302);
        redirect.setHeader("Location", "http://example.com/200");
        redirect.setHeader("Cache-Control", "public,max-age=3600");
        responses.add(redirect);
        client.execute(get, new ResponseHandler<Void>() {
            public Void handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
                assertEquals(_302.getStatusCode(), response.getStatusLine().getStatusCode());
                return null;
            }
        }, localContext);
        HttpHost host = (HttpHost) localContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
        HttpUriRequest req = (HttpUriRequest) localContext.getAttribute(ExecutionContext.HTTP_REQUEST);
        URI root = new URI(host.getSchemeName(), null, host.getHostName(), -1, "/", null, null);
        assertEquals("http://example.com/302", root.resolve(req.getURI()).toASCIIString());
    } while (false);
}

From source file:com.vdisk.net.session.AbstractSession.java

/**
 * {@inheritDoc} <br/>/*  ww w.jav  a  2  s.c  om*/
 * <br/>
 * The default implementation does all of this and more, including using a
 * connection pool and killing connections after a timeout to use less
 * battery power on mobile devices. It's unlikely that you'll want to change
 * this behavior.
 */
@Override
public synchronized HttpClient getHttpClient() {
    if (client == null) {
        // Set up default connection params. There are two routes to
        // VDisk - api server and content server.
        HttpParams connParams = new BasicHttpParams();
        ConnManagerParams.setMaxConnectionsPerRoute(connParams, new ConnPerRoute() {
            @Override
            public int getMaxForRoute(HttpRoute route) {
                return 10;
            }
        });
        ConnManagerParams.setMaxTotalConnections(connParams, 20);

        // Set up scheme registry.
        SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        try {
            schemeRegistry.register(new Scheme("https", TrustAllSSLSocketFactory.getDefault(), 443));
        } catch (Exception e) {
        }

        DBClientConnManager cm = new DBClientConnManager(connParams, schemeRegistry);

        // Set up client params.
        HttpParams httpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, DEFAULT_TIMEOUT_MILLIS);
        HttpConnectionParams.setSoTimeout(httpParams, DEFAULT_TIMEOUT_MILLIS);
        HttpConnectionParams.setSocketBufferSize(httpParams, 8192);
        HttpProtocolParams.setUserAgent(httpParams, makeUserAgent());
        httpParams.setParameter(ClientPNames.HANDLE_REDIRECTS, false);

        DefaultHttpClient c = new DefaultHttpClient(cm, httpParams) {
            @Override
            protected ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy() {
                return new DBKeepAliveStrategy();
            }

            @Override
            protected ConnectionReuseStrategy createConnectionReuseStrategy() {
                return new DBConnectionReuseStrategy();
            }
        };

        c.addRequestInterceptor(new HttpRequestInterceptor() {
            @Override
            public void process(final HttpRequest request, final HttpContext context)
                    throws HttpException, IOException {
                if (!request.containsHeader("Accept-Encoding")) {
                    request.addHeader("Accept-Encoding", "gzip");
                }
            }
        });

        c.addResponseInterceptor(new HttpResponseInterceptor() {
            @Override
            public void process(final HttpResponse response, final HttpContext context)
                    throws HttpException, IOException {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    Header ceheader = entity.getContentEncoding();
                    if (ceheader != null) {
                        HeaderElement[] codecs = ceheader.getElements();
                        for (HeaderElement codec : codecs) {
                            if (codec.getName().equalsIgnoreCase("gzip")) {
                                response.setEntity(new GzipDecompressingEntity(response.getEntity()));
                                return;
                            }
                        }
                    }
                }
            }
        });

        c.setHttpRequestRetryHandler(new RetryHandler(DEFAULT_MAX_RETRIES));

        client = c;
    }

    return client;
}

From source file:lucee.commons.net.http.httpclient4.HTTPEngine4Impl.java

public static DefaultHttpClient createClient(BasicHttpParams params, int maxRedirect) {
    params.setParameter(ClientPNames.HANDLE_REDIRECTS, maxRedirect == 0 ? Boolean.FALSE : Boolean.TRUE);
    if (maxRedirect > 0)
        params.setParameter(ClientPNames.MAX_REDIRECTS, new Integer(maxRedirect));
    params.setParameter(ClientPNames.REJECT_RELATIVE_REDIRECT, Boolean.FALSE);
    return new DefaultHttpClient(params);
}

From source file:org.expath.httpclient.impl.ApacheHttpConnection.java

/**
 * Make a new Apache HTTP client, in order to serve this request.
 *//* w ww  . jav  a 2  s  .c  o m*/
private AbstractHttpClient makeClient() {
    AbstractHttpClient client = new DefaultHttpClient();
    HttpParams params = client.getParams();
    // use the default JVM proxy settings (http.proxyHost, etc.)
    HttpRoutePlanner route = new ProxySelectorRoutePlanner(client.getConnectionManager().getSchemeRegistry(),
            ProxySelector.getDefault());
    client.setRoutePlanner(route);
    // do follow redirections?
    params.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, myFollowRedirect);
    // set the timeout if any
    if (myTimeout != null) {
        // See http://blog.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/
        HttpConnectionParams.setConnectionTimeout(params, myTimeout * 1000);
        HttpConnectionParams.setSoTimeout(params, myTimeout * 1000);
    }
    // the shared cookie store
    client.setCookieStore(COOKIES);
    // the HTTP version (1.0 or 1.1)
    params.setParameter("http.protocol.version", myVersion);
    // return the just built client
    return client;
}

From source file:org.brussels.gtug.attendance.AccountsActivity.java

/**
 * Retrieves the authorization cookie associated with the given token. This
 * method should only be used when running against a production appengine
 * backend (as opposed to a dev mode server).
 */// w  w  w .  j  av  a  2s . c  o  m
private String getAuthCookie(String authToken) {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    try {
        // Get SACSID cookie
        httpClient.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false);
        String uri = Constants.APP_SERVER_URL + "/_ah/login?continue=http://localhost/&auth=" + authToken;
        HttpGet method = new HttpGet(uri);

        HttpResponse res = httpClient.execute(method);
        StatusLine statusLine = res.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        Header[] headers = res.getHeaders("Set-Cookie");
        if (statusCode != 302 || headers.length == 0) {
            return null;
        }

        for (Cookie cookie : httpClient.getCookieStore().getCookies()) {
            if (AUTH_COOKIE_NAME.equals(cookie.getName())) {
                return AUTH_COOKIE_NAME + "=" + cookie.getValue();
            }
        }
    } catch (IOException e) {
        Log.w(TAG, "Got IOException " + e);
        Log.w(TAG, Log.getStackTraceString(e));
    } finally {
        httpClient.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true);
    }

    return null;
}

From source file:org.cloudfoundry.identity.batch.integration.ServerRunning.java

public RestTemplate createRestTemplate() {
    RestTemplate client = new RestTemplate();
    client.setRequestFactory(new HttpComponentsClientHttpRequestFactory() {
        @Override//from   w  w w . j  a v a2 s.  c  o  m
        public HttpClient getHttpClient() {
            HttpClient client = super.getHttpClient();
            client.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false);
            client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES);
            return client;
        }
    });
    client.setErrorHandler(new ResponseErrorHandler() {
        // Pass errors through in response entity for status code analysis
        public boolean hasError(ClientHttpResponse response) throws IOException {
            return false;
        }

        public void handleError(ClientHttpResponse response) throws IOException {
        }
    });
    return client;
}

From source file:net.paissad.minus.utils.HttpClientUtils.java

/**
 * /*from   w  w w. j av  a2  s .c om*/
 * @param baseURL
 * @param parametersBody
 * @param sessionId
 * @param fileToUpload - The file to upload.
 * @param filename - The name of the file to use during the upload process.
 * @return The response received from the Minus API.
 * @throws MinusException
 */
public static MinusHttpResponse doUpload(final String baseURL, final Map<String, String> parametersBody,
        final String sessionId, final File fileToUpload, final String filename) throws MinusException {

    DefaultHttpClient client = null;
    HttpPost uploadRequest = null;
    InputStream responseContent = null;

    try {
        String url = baseURL;
        if (parametersBody != null && !parametersBody.isEmpty()) {
            url += CommonUtils.encodeParams(parametersBody);
        }
        uploadRequest = new HttpPost(url);
        client = new DefaultHttpClient();
        client.setHttpRequestRetryHandler(new MinusHttpRequestRetryHandler());

        FileEntity fileEntity = new FileEntity(fileToUpload, "application/octet-stream");
        uploadRequest.setEntity(fileEntity);

        // We add this headers as specified by the Minus.com API during file
        // upload.
        uploadRequest.addHeader("Content-Disposition", "attachment; filename=a.bin");
        uploadRequest.addHeader("Content-Type", "application/octet-stream");

        client.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, true);
        client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH);

        CookieStore cookieStore = new BasicCookieStore();

        Cookie sessionCookie = null;
        if (sessionId != null && !sessionId.trim().isEmpty()) {
            sessionCookie = new BasicClientCookie2(MINUS_COOKIE_NAME, sessionId);
            ((BasicClientCookie2) sessionCookie).setPath("/");
            ((BasicClientCookie2) sessionCookie).setDomain(MINUS_DOMAIN_NAME);
            ((BasicClientCookie2) sessionCookie).setVersion(0);
            cookieStore.addCookie(sessionCookie);
        }

        client.setCookieStore(cookieStore);
        HttpContext localContext = new BasicHttpContext();
        localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

        HttpResponse httpResponse = client.execute(uploadRequest);

        // Let's update the cookie have the name 'sessionid'
        for (Cookie aCookie : client.getCookieStore().getCookies()) {
            if (aCookie.getName().equals(MINUS_COOKIE_NAME)) {
                sessionCookie = aCookie;
                break;
            }
        }

        StringBuilder result = new StringBuilder();
        int statusCode = httpResponse.getStatusLine().getStatusCode();

        if (statusCode == HttpStatus.SC_OK) {
            HttpEntity respEntity = httpResponse.getEntity();
            if (respEntity != null) {
                result.append(EntityUtils.toString(respEntity));
                EntityUtils.consume(respEntity);
            }

        } else {
            // The response code is not OK.
            StringBuilder errMsg = new StringBuilder();
            errMsg.append(" Upload failed => ").append(httpResponse.getStatusLine());
            if (uploadRequest != null) {
                errMsg.append(" : ").append(uploadRequest.getURI());
            }
            throw new MinusException(errMsg.toString());
        }

        return new MinusHttpResponse(result.toString(), sessionCookie);

    } catch (Exception e) {
        if (uploadRequest != null) {
            uploadRequest.abort();
        }
        String errMsg = "Error while uploading file (" + fileToUpload + ") : " + e.getMessage();
        throw new MinusException(errMsg, e);

    } finally {
        if (client != null) {
            client.getConnectionManager().shutdown();
        }
        CommonUtils.closeAllStreamsQuietly(responseContent);
    }
}

From source file:org.apache.marmotta.platform.core.services.http.HttpClientServiceImpl.java

@PostConstruct
protected void initialize() {
    try {/* ww  w  .j a v  a2  s  .  c o m*/
        lock.writeLock().lock();

        httpParams = new BasicHttpParams();
        String userAgentString = "Apache Marmotta/"
                + configurationService.getStringConfiguration("kiwi.version") + " (running at "
                + configurationService.getServerUri() + ")" + " lmf-core/"
                + configurationService.getStringConfiguration("kiwi.version");
        userAgentString = configurationService.getStringConfiguration("core.http.user_agent", userAgentString);

        httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT,
                configurationService.getIntConfiguration("core.http.so_timeout", 60000));
        httpParams.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,
                configurationService.getIntConfiguration("core.http.connection_timeout", 10000));

        httpParams.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true);
        httpParams.setIntParameter(ClientPNames.MAX_REDIRECTS, 3);

        SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
        schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));

        PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
        cm.setMaxTotal(configurationService.getIntConfiguration(CoreOptions.HTTP_MAX_CONNECTIONS, 20));
        cm.setDefaultMaxPerRoute(
                configurationService.getIntConfiguration(CoreOptions.HTTP_MAX_CONNECTIONS_PER_ROUTE, 10));

        final DefaultHttpClient hc = new DefaultHttpClient(cm, httpParams);
        hc.setRedirectStrategy(new LMFRedirectStrategy());
        hc.setHttpRequestRetryHandler(new LMFHttpRequestRetryHandler());
        hc.removeRequestInterceptorByClass(org.apache.http.protocol.RequestUserAgent.class);
        hc.addRequestInterceptor(new LMFRequestUserAgent(userAgentString));

        if (configurationService.getBooleanConfiguration(CoreOptions.HTTP_CLIENT_CACHE_ENABLE, true)) {
            CacheConfig cacheConfig = new CacheConfig();
            // FIXME: Hardcoded constants - is this useful?
            cacheConfig.setMaxCacheEntries(1000);
            cacheConfig.setMaxObjectSize(81920);

            final HttpCacheStorage cacheStore = new MapHttpCacheStorage(httpCache);

            this.httpClient = new MonitoredHttpClient(new CachingHttpClient(hc, cacheStore, cacheConfig));
        } else {
            this.httpClient = new MonitoredHttpClient(hc);
        }
        bytesSent.set(0);
        bytesReceived.set(0);
        requestsExecuted.set(0);

        idleConnectionMonitorThread = new IdleConnectionMonitorThread(httpClient.getConnectionManager());
        idleConnectionMonitorThread.start();

        StatisticsProvider stats = new StatisticsProvider(cm);
        statisticsService.registerModule(HttpClientService.class.getSimpleName(), stats);
    } finally {
        lock.writeLock().unlock();
    }
}