at.bitfire.davdroid.webdav.DavHttpClient.java Source code

Java tutorial

Introduction

Here is the source code for at.bitfire.davdroid.webdav.DavHttpClient.java

Source

/*******************************************************************************
 * Copyright (c) 2014 Richard Hirner (bitfire web engineering).
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Contributors:
 *     Richard Hirner (bitfire web engineering) - initial API and implementation
 ******************************************************************************/
package at.bitfire.davdroid.webdav;

import org.apache.http.client.params.HttpClientParams;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

import at.bitfire.davdroid.Constants;

// see AndroidHttpClient

public class DavHttpClient extends DefaultHttpClient {
    private DavHttpClient(HttpParams params) {
        super(params);
    }

    public static DefaultHttpClient getDefault() {
        HttpParams params = new BasicHttpParams();
        params.setParameter(CoreProtocolPNames.USER_AGENT, "DAVdroid/" + Constants.APP_VERSION);

        // use defaults of AndroidHttpClient
        HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);
        HttpConnectionParams.setSoTimeout(params, 20 * 1000);
        HttpConnectionParams.setSocketBufferSize(params, 8192);
        HttpConnectionParams.setStaleCheckingEnabled(params, false);

        // don't allow redirections
        HttpClientParams.setRedirecting(params, false);

        DavHttpClient httpClient = new DavHttpClient(params);

        // use our own, SNI-capable LayeredSocketFactory for https://
        SchemeRegistry schemeRegistry = httpClient.getConnectionManager().getSchemeRegistry();
        schemeRegistry.register(new Scheme("https", new TlsSniSocketFactory(), 443));

        // allow gzip compression
        GzipDecompressingEntity.enable(httpClient);
        return httpClient;
    }

}