Example usage for org.apache.commons.httpclient HttpClient getState

List of usage examples for org.apache.commons.httpclient HttpClient getState

Introduction

In this page you can find the example usage for org.apache.commons.httpclient HttpClient getState.

Prototype

public HttpState getState()

Source Link

Usage

From source file:org.exist.xquery.modules.httpclient.HTTPClientModule.java

private static void setConfigFromFile(final Path configFile, final HttpClient http) {
    if (LOG.isDebugEnabled()) {
        LOG.debug("http.configfile='" + configFile.toAbsolutePath() + "'");
    }/*from  www .  j a  v  a2 s . com*/

    final Properties props = new Properties();
    try (final InputStream is = Files.newInputStream(configFile)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("Loading proxy settings from " + configFile.toAbsolutePath());
        }

        props.load(is);

        // Hostname / port
        final String proxyHost = props.getProperty("proxy.host");
        final int proxyPort = Integer.parseInt(props.getProperty("proxy.port", "8080"));

        // Username / password
        final String proxyUser = props.getProperty("proxy.user");
        final String proxyPassword = props.getProperty("proxy.password");

        // NTLM specifics
        String proxyDomain = props.getProperty("proxy.ntlm.domain");
        if ("NONE".equalsIgnoreCase(proxyDomain)) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Forcing removal NTLM");
            }
            proxyDomain = null;
        }

        // Set scope
        final AuthScope authScope = new AuthScope(proxyHost, proxyPort);

        // Setup right credentials
        final Credentials credentials;
        if (proxyDomain == null) {
            credentials = new UsernamePasswordCredentials(proxyUser, proxyPassword);
        } else {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Using NTLM authentication for '" + proxyDomain + "'");
            }
            credentials = new NTCredentials(proxyUser, proxyPassword, proxyHost, proxyDomain);
        }

        // Set details
        final HttpState state = http.getState();
        http.getHostConfiguration().setProxy(proxyHost, proxyPort);
        state.setProxyCredentials(authScope, credentials);

        if (LOG.isDebugEnabled()) {
            LOG.info("Set proxy: " + proxyUser + "@" + proxyHost + ":" + proxyPort
                    + (proxyDomain == null ? "" : " (NTLM:'" + proxyDomain + "')"));
        }
    } catch (final IOException ex) {
        LOG.error("Failed to read proxy configuration from '" + configFile + "'");
    }
}

From source file:org.exjello.mail.Exchange2003Connection.java

private void signOn() throws Exception {
    HttpClient client = getClient();
    URL serverUrl = new URL(server);
    String host = serverUrl.getHost();
    int port = serverUrl.getPort();
    if (port == -1)
        port = serverUrl.getDefaultPort();
    AuthScope authScope = new AuthScope(host, port);

    if (username.indexOf("\\") < 0) {
        client.getState().setCredentials(authScope, new UsernamePasswordCredentials(username, password));
    } else {//www  . j av  a2 s . c  o m
        // Try to connect with NTLM authentication
        String domainUser = username.substring(username.indexOf("\\") + 1, username.length());
        String domain = username.substring(0, username.indexOf("\\"));
        client.getState().setCredentials(authScope, new NTCredentials(domainUser, password, host, domain));
    }

    boolean authenticated = false;
    OptionsMethod authTest = new OptionsMethod(server + "/exchange");
    try {
        authenticated = (client.executeMethod(authTest) < 400);
    } finally {
        try {
            InputStream stream = authTest.getResponseBodyAsStream();
            byte[] buf = new byte[65536];
            try {
                if (session.getDebug()) {
                    PrintStream log = session.getDebugOut();
                    log.println("Response Body:");
                    int count;
                    while ((count = stream.read(buf, 0, 65536)) != -1) {
                        log.write(buf, 0, count);
                    }
                    log.flush();
                    log.println();
                } else {
                    while (stream.read(buf, 0, 65536) != -1)
                        ;
                }
            } catch (Exception ignore) {
            } finally {
                try {
                    stream.close();
                } catch (Exception ignore2) {
                }
            }
        } finally {
            authTest.releaseConnection();
        }
    }
    if (!authenticated) {
        PostMethod op = new PostMethod(server + SIGN_ON_URI);
        op.setRequestHeader("Content-Type", FORM_URLENCODED_CONTENT_TYPE);
        op.addParameter("destination", server + "/exchange");
        op.addParameter("flags", "0");
        op.addParameter("username", username);
        op.addParameter("password", password);
        try {
            int status = client.executeMethod(op);
            if (status >= 400) {
                throw new IllegalStateException("Sign-on failed: " + status);
            }
        } finally {
            try {
                InputStream stream = op.getResponseBodyAsStream();
                byte[] buf = new byte[65536];
                try {
                    if (session.getDebug()) {
                        PrintStream log = session.getDebugOut();
                        log.println("Response Body:");
                        int count;
                        while ((count = stream.read(buf, 0, 65536)) != -1) {
                            log.write(buf, 0, count);
                        }
                        log.flush();
                        log.println();
                    } else {
                        while (stream.read(buf, 0, 65536) != -1)
                            ;
                    }
                } catch (Exception ignore) {
                } finally {
                    try {
                        stream.close();
                    } catch (Exception ignore2) {
                    }
                }
            } finally {
                op.releaseConnection();
            }
        }
    }
    findInbox();
}

From source file:org.exoplatform.calendar.service.impl.RemoteCalendarServiceImpl.java

@Override
public boolean isValidRemoteUrl(String url, String type, String remoteUser, String remotePassword)
        throws IOException, UnsupportedOperationException {
    try {//from   w  w w  .  j av a 2  s. co m
        HttpClient client = new HttpClient();
        HostConfiguration hostConfig = new HostConfiguration();
        String host = new URL(url).getHost();
        if (StringUtils.isEmpty(host))
            host = url;
        hostConfig.setHost(host);
        client.setHostConfiguration(hostConfig);
        Credentials credentials = null;
        client.setHostConfiguration(hostConfig);
        if (!StringUtils.isEmpty(remoteUser)) {
            credentials = new UsernamePasswordCredentials(remoteUser, remotePassword);
            client.getState().setCredentials(new AuthScope(host, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
                    credentials);
        }

        if (CalendarService.ICALENDAR.equals(type)) {
            GetMethod get = new GetMethod(url);
            client.executeMethod(get);
            int statusCode = get.getStatusCode();
            get.releaseConnection();
            return (statusCode == HttpURLConnection.HTTP_OK);
        } else {
            if (CalendarService.CALDAV.equals(type)) {
                OptionsMethod options = new OptionsMethod(url);
                client.executeMethod(options);
                Header header = options.getResponseHeader("DAV");
                options.releaseConnection();
                if (header == null) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Cannot connect to remoter server or not support WebDav access");
                    }
                    return false;
                }
                Boolean support = header.toString().contains("calendar-access");
                options.releaseConnection();
                if (!support) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Remote server does not support CalDav access");
                    }
                    throw new UnsupportedOperationException("Remote server does not support CalDav access");
                }
                return support;
            }
            return false;
        }
    } catch (MalformedURLException e) {
        if (logger.isDebugEnabled())
            logger.debug(e.getMessage(), e);
        throw new IOException("URL is invalid. Maybe no legal protocol or URl could not be parsed");
    } catch (IOException e) {
        if (logger.isDebugEnabled())
            logger.debug(e.getMessage(), e);
        throw new IOException("Error occurs when connecting to remote server");
    }
}

From source file:org.exoplatform.calendar.service.impl.RemoteCalendarServiceImpl.java

/**
 * Get the HttpClient object to prepare for the connection with remote server
 * @param remoteCalendar holds information about remote server
 * @return HttpClient object/*from w w w  .j a va  2  s. c o  m*/
 * @throws Exception
 */
public HttpClient getRemoteClient(RemoteCalendar remoteCalendar) throws Exception {
    HostConfiguration hostConfig = new HostConfiguration();
    String host = new URL(remoteCalendar.getRemoteUrl()).getHost();
    if (Utils.isEmpty(host))
        host = remoteCalendar.getRemoteUrl();
    hostConfig.setHost(host);
    HttpClient client = new HttpClient();
    client.setHostConfiguration(hostConfig);
    client.getHttpConnectionManager().getParams().setConnectionTimeout(10000);
    client.getHttpConnectionManager().getParams().setSoTimeout(10000);
    // basic authentication
    if (!Utils.isEmpty(remoteCalendar.getRemoteUser())) {
        Credentials credentials = new UsernamePasswordCredentials(remoteCalendar.getRemoteUser(),
                remoteCalendar.getRemotePassword());
        client.getState().setCredentials(new AuthScope(host, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
                credentials);
    }
    return client;
}

From source file:org.exoplatform.rest.client.openfire.Utils.java

static Response doGet(URL url) throws HttpException, IOException {
    HttpClient httpClient = new HttpClient();
    httpClient.getState().setCredentials(new AuthScope(url.getHost(), url.getPort()),
            usernamePasswordCredentials);
    GetMethod get = new GetMethod(url.toString());
    get.setDoAuthentication(true);/*from  w w w . java  2s  .c  om*/
    int status = httpClient.executeMethod(get);
    Document resDoc = null;
    try {
        if (get.getResponseBody().length > 0) {
            // if response has body
            resDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                    .parse(get.getResponseBodyAsStream());
        }
    } catch (Exception e) {
        throw new HttpException("XML parsing error : " + e);
    } finally {
        get.releaseConnection();
    }
    return new Response(status, resDoc);
}

From source file:org.exoplatform.rest.client.openfire.Utils.java

static Response doPost(URL url) throws HttpException, IOException {
    HttpClient httpClient = new HttpClient();
    httpClient.getState().setCredentials(new AuthScope(url.getHost(), url.getPort()),
            usernamePasswordCredentials);
    PostMethod post = new PostMethod(url.toString());
    post.setDoAuthentication(true);/*from  w ww .j ava2s. c  o  m*/
    int status = httpClient.executeMethod(post);
    Document resDoc = null;
    try {
        if (post.getResponseBody().length > 0) {
            // if response has body
            resDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                    .parse(post.getResponseBodyAsStream());
        }
    } catch (Exception e) {
        throw new HttpException("XML parsing error : " + e);
    } finally {
        post.releaseConnection();
    }
    return new Response(status, resDoc);
}

From source file:org.exoplatform.rest.client.openfire.Utils.java

static Response doGet(URL url, HashMap<String, String> params) throws HttpException, IOException {
    if (params == null || params.size() == 0)
        return doGet(url);
    HttpClient httpClient = new HttpClient();
    httpClient.getState().setCredentials(new AuthScope(url.getHost(), url.getPort()),
            usernamePasswordCredentials);
    String _url = url.toString();
    Set<String> key_set = params.keySet();
    _url += (key_set.size() > 0) ? "?" : "";
    for (String key : key_set)
        _url += (key + "=" + params.get(key));
    GetMethod get = new GetMethod(_url);
    get.setDoAuthentication(true);/*from  w ww .java 2 s .co m*/
    int status = httpClient.executeMethod(get);
    Document resDoc = null;
    try {
        if (get.getResponseBody().length > 0) {
            // if response has body
            resDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                    .parse(get.getResponseBodyAsStream());
        }
    } catch (Exception e) {
        throw new HttpException("XML parsing error : " + e);
    } finally {
        get.releaseConnection();
    }
    return new Response(status, resDoc);
}

From source file:org.exoplatform.rest.client.openfire.Utils.java

static Response doPost(URL url, HashMap<String, String> params) throws HttpException, IOException {
    if (params == null || params.size() == 0)
        return doPost(url);
    HttpClient httpClient = new HttpClient();
    httpClient.getState().setCredentials(new AuthScope(url.getHost(), url.getPort()),
            usernamePasswordCredentials);
    PostMethod post = new PostMethod(url.toString());
    post.setDoAuthentication(true);//from  www  .j av a 2  s  . co m
    Set<String> key_set = params.keySet();
    for (String key : key_set) {
        post.setParameter(key, params.get(key));
    }
    int status = httpClient.executeMethod(post);
    Document resDoc = null;
    try {
        if (post.getResponseBody().length > 0) {
            // if response has body
            resDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                    .parse(post.getResponseBodyAsStream());
        }
    } catch (Exception e) {
        throw new HttpException("XML parsing error : " + e);
    } finally {
        post.releaseConnection();
    }
    return new Response(status, resDoc);
}

From source file:org.exoplatform.tqa.template.SenderWebdav.java

public static void sendTemlate(String webdavLogin, String webdavPass, String webdavURL, String folderLocal,
        String nameParentFolder) {
    rootFolder = nameParentFolder;//from   w ww . j  ava2s  . c  om

    HttpClient client = new HttpClient();
    try {
        webdavPass = EncryptService.decrypt(webdavPass);
        Credentials creds = new UsernamePasswordCredentials(webdavLogin, webdavPass);
        client.getState().setCredentials(AuthScope.ANY, creds);

        //delete parent folder
        //      deleteFolder(client, webdavURL, rootFolder);

        //create parent folder
        createFolder(client, webdavURL, rootFolder);
        createFile(client, webdavURL + "/" + nameParentFolder, new File(folderLocal + "/" + "content"));

        SearchAllFiles(new File(folderLocal), client, webdavURL, nameParentFolder);
    } catch (Exception e) {
        e.printStackTrace();
        LOGGER.error(e.getMessage());
    }

}

From source file:org.fao.geonet.lib.NetLib.java

/** Setup proxy for http client
  *//*w w  w.  j av  a2 s .  c  om*/
public void setupProxy(SettingManager sm, HttpClient client) {
    boolean enabled = sm.getValueAsBool(ENABLED, false);
    String host = sm.getValue(HOST);
    String port = sm.getValue(PORT);
    String username = sm.getValue(USERNAME);
    String password = sm.getValue(PASSWORD);

    if (enabled) {
        if (!Lib.type.isInteger(port)) {
            Log.error(Geonet.GEONETWORK, "Proxy port is not an integer : " + port);
        } else {
            HostConfiguration config = client.getHostConfiguration();
            if (config == null)
                config = new HostConfiguration();
            config.setProxy(host, Integer.parseInt(port));
            client.setHostConfiguration(config);

            if (username.trim().length() != 0) {
                Credentials cred = new UsernamePasswordCredentials(username, password);
                AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);

                client.getState().setProxyCredentials(scope, cred);
            }
            List authPrefs = new ArrayList(2);
            authPrefs.add(AuthPolicy.DIGEST);
            authPrefs.add(AuthPolicy.BASIC);
            // This will exclude the NTLM authentication scheme
            client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
        }
    }
}