Package org.vietspider.net.client.impl

Source Code of org.vietspider.net.client.impl.AnonymousHttpClient

/*
* $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultHttpClient.java $
* $Revision: 677250 $
* $Date: 2008-07-16 18:45:47 +0700 (Wed, 16 Jul 2008) $
*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation.  For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/

package org.vietspider.net.client.impl;

import java.io.IOException;

import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.auth.AuthSchemeRegistry;
import org.apache.http.client.AuthenticationHandler;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.RedirectHandler;
import org.apache.http.client.UserTokenHandler;
import org.apache.http.client.params.AuthPolicy;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.client.protocol.RequestAddCookies;
import org.apache.http.client.protocol.RequestDefaultHeaders;
import org.apache.http.client.protocol.RequestProxyAuthentication;
import org.apache.http.client.protocol.RequestTargetAuthentication;
import org.apache.http.client.protocol.ResponseProcessCookies;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.ClientConnectionManagerFactory;
import org.apache.http.conn.ConnectionKeepAliveStrategy;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.conn.routing.HttpRoutePlanner;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.cookie.CookieSpecRegistry;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.auth.BasicSchemeFactory;
import org.apache.http.impl.auth.DigestSchemeFactory;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.DefaultProxyAuthenticationHandler;
import org.apache.http.impl.client.DefaultRedirectHandler;
import org.apache.http.impl.client.DefaultTargetAuthenticationHandler;
import org.apache.http.impl.client.DefaultUserTokenHandler;
import org.apache.http.impl.conn.DefaultHttpRoutePlanner;
import org.apache.http.impl.conn.SingleClientConnManager;
import org.apache.http.impl.cookie.BestMatchSpecFactory;
import org.apache.http.impl.cookie.BrowserCompatSpecFactory;
import org.apache.http.impl.cookie.NetscapeDraftSpecFactory;
import org.apache.http.impl.cookie.RFC2109SpecFactory;
import org.apache.http.impl.cookie.RFC2965SpecFactory;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.HttpRequestExecutor;
import org.apache.http.protocol.RequestConnControl;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
import org.apache.http.util.VersionInfo;
import org.vietspider.net.client.Proxies;

public class AnonymousHttpClient extends AbstractHttpClient {

  private volatile Proxies proxies;

  public AnonymousHttpClient(
      final ClientConnectionManager conman,
      final HttpParams params) {
    super(conman, params);
  }


  public AnonymousHttpClient(final HttpParams params) {
    super(null, params);
  }


  public AnonymousHttpClient() {
    super(null, null);
  }


  @Override
  protected HttpParams createHttpParams() {
    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params,
        HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params,
        HTTP.DEFAULT_CONTENT_CHARSET);
    HttpProtocolParams.setUseExpectContinue(params,
        true);

    // determine the release version from packaged version info
    final VersionInfo vi = VersionInfo.loadVersionInfo
    ("org.apache.http.client", getClass().getClassLoader());
    final String release = (vi != null) ?
        vi.getRelease() : VersionInfo.UNAVAILABLE;
        HttpProtocolParams.setUserAgent(params,
            "Apache-HttpClient/" + release + " (java 1.4)");

        return params;
  }


  @Override
  protected HttpRequestExecutor createRequestExecutor() {
    return new HttpRequestExecutor();
  }


  @Override
  protected ClientConnectionManager createClientConnectionManager() {
    SchemeRegistry registry = new SchemeRegistry();
    registry.register(
        new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    registry.register(
        new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

    ClientConnectionManager connManager = null;    
    HttpParams params = getParams();

    ClientConnectionManagerFactory factory = null;

    // Try first getting the factory directly as an object.
    factory = (ClientConnectionManagerFactory) params
    .getParameter(ClientPNames.CONNECTION_MANAGER_FACTORY);
    if (factory == null) { // then try getting its class name.
      String className = (String) params.getParameter(
          ClientPNames.CONNECTION_MANAGER_FACTORY_CLASS_NAME);
      if (className != null) {
        try {
          Class<?> clazz = Class.forName(className);
          factory = (ClientConnectionManagerFactory) clazz.newInstance();
        } catch (ClassNotFoundException ex) {
          throw new IllegalStateException("Invalid class name: " + className);
        } catch (IllegalAccessException ex) {
          throw new IllegalAccessError(ex.getMessage());
        } catch (InstantiationException ex) {
          throw new InstantiationError(ex.getMessage());
        }
      }
    }

    if(factory != null) {
      connManager = factory.newInstance(params, registry);
    } else {
      connManager = new SingleClientConnManager(getParams(), registry);
    }

    return connManager;
  }


  @Override
  protected HttpContext createHttpContext() {
    HttpContext context = new BasicHttpContext();
    context.setAttribute(
        ClientContext.AUTHSCHEME_REGISTRY,
        getAuthSchemes());
    context.setAttribute(
        ClientContext.COOKIESPEC_REGISTRY,
        getCookieSpecs());
    context.setAttribute(
        ClientContext.COOKIE_STORE,
        getCookieStore());
    context.setAttribute(
        ClientContext.CREDS_PROVIDER,
        getCredentialsProvider());
    return context;
  }


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

  @Override
  protected ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy() {
    return new DefaultConnectionKeepAliveStrategy();
  }


  @Override
  protected AuthSchemeRegistry createAuthSchemeRegistry() {
    AuthSchemeRegistry registry = new AuthSchemeRegistry();
    registry.register(
        AuthPolicy.BASIC,
        new BasicSchemeFactory());
    registry.register(
        AuthPolicy.DIGEST,
        new DigestSchemeFactory());
    return registry;
  }


  @Override
  protected CookieSpecRegistry createCookieSpecRegistry() {
    CookieSpecRegistry registry = new CookieSpecRegistry();
    registry.register(
        CookiePolicy.BEST_MATCH,
        new BestMatchSpecFactory());
    registry.register(
        CookiePolicy.BROWSER_COMPATIBILITY,
        new BrowserCompatSpecFactory());
    registry.register(
        CookiePolicy.NETSCAPE,
        new NetscapeDraftSpecFactory());
    registry.register(
        CookiePolicy.RFC_2109,
        new RFC2109SpecFactory());
    registry.register(
        CookiePolicy.RFC_2965,
        new RFC2965SpecFactory());
    return registry;
  }


  @Override
  protected BasicHttpProcessor createHttpProcessor() {
    BasicHttpProcessor httpproc = new BasicHttpProcessor();
    httpproc.addInterceptor(new RequestDefaultHeaders());
    // Required protocol interceptors
    httpproc.addInterceptor(new RequestContent());
    httpproc.addInterceptor(new RequestTargetHost());
    // Recommended protocol interceptors
    httpproc.addInterceptor(new RequestConnControl());
    httpproc.addInterceptor(new RequestUserAgent());
    httpproc.addInterceptor(new RequestExpectContinue());
    // HTTP state management interceptors
    httpproc.addInterceptor(new RequestAddCookies());
    httpproc.addInterceptor(new ResponseProcessCookies());
    // HTTP authentication interceptors
    httpproc.addInterceptor(new RequestTargetAuthentication());
    httpproc.addInterceptor(new RequestProxyAuthentication());
    return httpproc;
  }


  @Override
  protected HttpRequestRetryHandler createHttpRequestRetryHandler() {
    return new DefaultHttpRequestRetryHandler();
  }


  @Override
  protected RedirectHandler createRedirectHandler() {
    return new DefaultRedirectHandler();
  }


  @Override
  protected AuthenticationHandler createTargetAuthenticationHandler() {
    return new DefaultTargetAuthenticationHandler();
  }


  @Override
  protected AuthenticationHandler createProxyAuthenticationHandler() {
    return new DefaultProxyAuthenticationHandler();
  }


  @Override
  protected CookieStore createCookieStore() {
    return new BasicCookieStore();
  }


  @Override
  protected CredentialsProvider createCredentialsProvider() {
    return new BasicCredentialsProvider();
  }


  @Override
  protected HttpRoutePlanner createHttpRoutePlanner() {
    return new DefaultHttpRoutePlanner
    (getConnectionManager().getSchemeRegistry());
  }


  @Override
  protected UserTokenHandler createUserTokenHandler() {
    return new DefaultUserTokenHandler();
  }

  @Override
  public HttpResponse execute(
      HttpHost target, HttpRequest request) throws IOException, ClientProtocolException {
    HttpHost httpProxy = proxies.next();
//    System.out.println("==================== >"+ httpProxy);
    getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, httpProxy);
    return execute(target, request, (HttpContext) null);
  }

  public Proxies getProxies() { return proxies; }


  public void setProxies(Proxies proxies) { this.proxies = proxies;  }

}
TOP

Related Classes of org.vietspider.net.client.impl.AnonymousHttpClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.