Package com.spidercache.cache

Source Code of com.spidercache.cache.OtherTest$PostThread

package com.spidercache.cache;

import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.cache.CacheConfig;
import org.apache.http.impl.client.cache.CachingHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

import com.spidercache.utils.IntermediateHttpClient;

public class OtherTest {
 
  public static void main(String[] args) throws Exception {
        // Create an HttpClient with the ThreadSafeClientConnManager.
        // This connection manager must be used if more than one thread will
        // be using the HttpClient.
   
    IntermediateHttpClient interClient = new IntermediateHttpClient();
    ((ThreadSafeClientConnManager)interClient.getConnectionManager()).setMaxTotal(100);
        CacheConfig config = new CacheConfig();
        config.setMaxObjectSizeBytes(2<<24);
        CachingHttpClient httpclient = new CachingHttpClient(new IntermediateHttpClient(), new Cache((long)2<<34, "places"), config);

        try {
            // create an array of URIs to perform GETs on
            String[] urisToGet = {
                "http://www.gutenberg.org/files/76/76-h/76-h/76-h.htm",
                "http://www.gutenberg.org/cache/epub/10947/pg10947.html"
                //"http://hc.apache.org/httpcomponents-client-ga/",
                //"http://svn.apache.org/viewvc/httpcomponents/"
            };

            // create a thread for each URI
            GetThread[] threads = new GetThread[10];
            for (int i = 0; i < threads.length; i++) {
                HttpGet httpget = new HttpGet(urisToGet[i%2]);
                threads[i] = new GetThread(httpclient, httpget, i + 1);
            }

            // start the threads
            for (int j = 0; j < threads.length; j++) {
                threads[j].start();
               // threads[j].join();
            }

            // join the threads
            for (int j = 0; j < threads.length; j++) {
                threads[j].join();
            }

        } finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
    }

    /**
     * A thread that performs a GET.
     */
    static class GetThread extends Thread {

        private final HttpClient httpClient;
        private final HttpContext context;
        private final HttpGet httpget;
        private final int id;

        public GetThread(HttpClient httpClient, HttpGet httpget, int id) {
            this.httpClient = httpClient;
            this.context = new BasicHttpContext();
            this.httpget = httpget;
            this.id = id;
        }

        /**
         * Executes the GetMethod and prints some status information.
         */
        @Override
        public void run() {

            //System.out.println(id + " - about to get something from " + httpget.getURI());

            try {

                // execute the method
                HttpResponse response = httpClient.execute(httpget, context);

                //System.out.println(id + " - get executed");
                // get the response body as an array of bytes
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                  EntityUtils.consume(entity);
                    byte[] bytes = EntityUtils.toByteArray(entity);
                    EntityUtils.consume(entity);
                   
                   // System.out.println(id + " - " + bytes.length + " bytes read");
                }

            } catch (Exception e) {
                httpget.abort();
                //System.out.println(id + " - error: " + e);
                e.printStackTrace();
            }
        }

    }
   
    static class PostThread extends Thread {

        private final HttpClient httpClient;
        private final HttpContext context;
        private final HttpPost httppost;
        private final int id;

        public PostThread(HttpClient httpClient, HttpPost httppost, int id, List<NameValuePair> postData) {
            this.httpClient = httpClient;
            this.context = new BasicHttpContext();
            this.httppost = httppost;
            this.id = id;
            for(int i =0; i<postData.size(); i++)
            {
              try {
          httppost.setEntity(new UrlEncodedFormEntity(postData));
        } catch (UnsupportedEncodingException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
            }
        }

        /**
         * Executes the GetMethod and prints some status information.
         */
        @Override
        public void run() {

            System.out.println(id + " - about to get something from " + httppost.getURI());

            try {

                // execute the method
                HttpResponse response = httpClient.execute(httppost, context);

                System.out.println(id + " - get executed");
                // get the response body as an array of bytes
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    byte[] bytes = EntityUtils.toByteArray(entity);
                    EntityUtils.consume(entity);
                    System.out.println(id + " - " + bytes.length + " bytes read");
                }

            } catch (Exception e) {
                httppost.abort();
                System.out.println(id + " - error: " + e);
                e.printStackTrace();
            }
        }

    }
}
TOP

Related Classes of com.spidercache.cache.OtherTest$PostThread

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.