Agree with you. But I think httpclient's target is not only this. Httpclient
has a connection pool to keep the links with the remote http server, and
httpurlconnection download a page with re-opening the connection each time,
why their speeds are not different?

On 2/8/07, maomaode <[EMAIL PROTECTED]> wrote:

I think the HttpClient essentially use the urlconnection, then i would
ask why httpclient will faster than urlconnection?
I think the benefit of HttpClient is that it manage the connection, that
make your code more neat, you can focus on the business logic...
> Hi,
> I have a problem when trying to comparing the speed between JDK
> HttpURLConnection and HttpClient.
>
> Now I have two methods, one is performed with jdk(1.5)
httpurlConnection,
> the other is performed with httpClient( 3.0.1). Both of them try to
> download
> the same
> webpage(http://jakarta.apache.org).After<
http://jakarta.apache.org%29.After>testing,
>
> the average time which performed JDK httpurlconnection  is  200ms,
> so as the one which performed httpclient.That means their speeds are
> almost
> the same.
>
> So, since HttpClient use persistence connection default but JDK do
> not, why
> httpClient's speed could not be more fast than JDK?
>
> Another problem is, is it normal to httpclient to use 200ms to download
a
> page like http://jakarta.apache.org? I mean, when using persistence
> connection, maybe this could not be accepted.
>
> Any help will be great appreciated
>
> ----------------------------------------Source to httpclient
> method-------------------------------------
>    public void testGetMethod(){
>
>        MultiThreadedHttpConnectionManager manager=new
> MultiThreadedHttpConnectionManager();
>        manager.getParams().setConnectionTimeout(3000);
>        manager.getParams ().setDefaultMaxConnectionsPerHost(1);
> //        manager.getParams().setMaxTotalConnections(30);
>        HttpClient httpClient = new HttpClient(manager);
>        // Set the default host/protocol for the methods to connect to.
>        // This value will only be used if the methods are not given an
> absolute URI
> //        httpClient.getHostConfiguration().setProxy("192.168.0.10",80);
> //        httpClient.getHostConfiguration().setHost("jakarta.apache.org
",
> 80, "http");
>        GetMethod method = new GetMethod(" http://jakarta.apache.org";);
>        for (int i=0;i<10;i++){
>        try {
>
> //            System.out.println(" - about to get something from " +
> method.getURI());
>            // execute the method
>            long start=System.currentTimeMillis();
>            httpClient.executeMethod(method);
>
> //            System.out.println(" - get executed");
>            // get the response body as an array of bytes
>            byte[] bytes = method.getResponseBody();
>            System.out.println("cost time is "+(System.currentTimeMillis
> ()-start));
>
> //            System.out.println(new String(bytes));
> //            System.out.println(" - " + bytes.length + " bytes read");
>
>        } catch (Exception e) {
>            System.out.println(" - error: " + e);
>        } finally {
>            // always release the connection after we're done
>            method.releaseConnection();
> //            System.out.println(" - connection released");
>        }
>        }
>    }
> ------------------------------------------source code to JDK
> httpurlconnection------------------------------------------------
>    public void testJDKHttpURlconnection() {
>
>        for (int i = 0; i < 10; i++) {
>            try {
>                long start = System.currentTimeMillis();
>                URL requestedURL = new URL("http://jakarta.apache.org";);
>                HttpURLConnection conn = (HttpURLConnection) requestedURL
>                        .openConnection();
>
>                conn.setRequestProperty("User-Agent",
>                        "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT
5.0
> )");
>
>                conn.setUseCaches(false);
>
>                conn.connect();
>
>                BufferedInputStream remoteBIS = new
> BufferedInputStream(conn
>                        .getInputStream());
>                ByteArrayOutputStream baos = new
> ByteArrayOutputStream(10240);
>                byte[] buf = new byte[1024];
>                int bytesRead = 0;
>                while (bytesRead >= 0) {
>                    baos.write(buf, 0, bytesRead);
>                    bytesRead = remoteBIS.read(buf);
>                }
>                byte[] content = baos.toByteArray();
>                System.out.println("cost time is "
>                        + (System.currentTimeMillis() - start));
>
>            } catch (Exception e) {
>            }
>        }
>    }
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to