One possible explanation for the 20 second delay is that the curl call goes 
through a proxy (defined by the http_proxy/https_proxy environment properties), 
while Java does not pick up these properties. If this is indeed the case, you 
need to pass some system properties in your java call. See the documentation: 
https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html.

Yossi.

-----Original Message-----
From: Somshekar C Kadam <somkada...@gmail.com> 
Sent: Thursday, 5 September 2019 12:45
To: HttpClient User Discussion <httpclient-users@hc.apache.org>
Subject: Re: apache httpclient

Hi Brenda,

First of all thanks for your time and advice.
 I am not asking for Arm, I was telling for Intel Ubuntu Linux machine, not 
able to get it compiled.

I will send error to you later.

Regards Somshekar

On Thu, Sep 5, 2019, 3:05 PM Bernd Eckenfels <e...@zusammenkunft.net> wrote:

> Hello,
>
> The URLConnection code looks fine (line reading is not the most 
> performing way to do it and buffer size is probably on the small side 
> but that should not be a deal breaker). Maybe you can add timestamp 
> printing so you can see where the delay happens. (Especially is it 
> while print_certs which means it is the connection/handshake or is the print 
> taking so long.
>
> BTW: when measuring you also should not print to console, that can be 
> very slow on embedded devices (and in general)
>
> As soon as you provide us the error details we can help you with that, 
> I don’t think there are specific compile instructions available for arm.
>
> Gruss
> Bernd
>
>
> --
> http://bernd.eckenfels.net
>
> ________________________________
> Von: Somshekar C Kadam <somkada...@gmail.com>
> Gesendet: Donnerstag, September 5, 2019 11:15 AM
> An: HttpClient User Discussion
> Betreff: Re: apache httpclient
>
> Hi Bernd,
>
> Missed the sample program used
> HttpsClient.java
> ================
> import java.net.MalformedURLException; import java.net.URL; import 
> java.security.cert.Certificate; import java.io.*;
>
> import javax.net.ssl.HttpsURLConnection; import 
> javax.net.ssl.SSLPeerUnverifiedException;
>
> public class HttpsClient {
>
> public static void main(String[] args) { new HttpsClient().testIt(); }
>
> private void testIt(){
>
> // String https_url = "https://www.google.com/";; String https_url = "
> https://transparencyreport.google.com/https/overview?hl=en";;
> URL url;
> try {
>
> url = new URL(https_url);
> HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
>
> //dumpl all cert info
> print_https_cert(con);
>
> //dump all the content
> print_content(con);
>
> } catch (MalformedURLException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
>
> }
>
> private void print_https_cert(HttpsURLConnection con){
>
> if(con!=null){
>
> try {
>
> System.out.println("Response Code : " + con.getResponseCode()); 
> System.out.println("Cipher Suite : " + con.getCipherSuite()); 
> System.out.println("\n");
>
> Certificate[] certs = con.getServerCertificates(); for(Certificate 
> cert : certs){ System.out.println("Cert Type : " + cert.getType()); 
> System.out.println("Cert Hash Code : " + cert.hashCode()); 
> System.out.println("Cert Public Key Algorithm : "
> + cert.getPublicKey().getAlgorithm());
> System.out.println("Cert Public Key Format : "
> + cert.getPublicKey().getFormat());
> System.out.println("\n");
> }
>
> } catch (SSLPeerUnverifiedException e) { e.printStackTrace(); } catch 
> (IOException e){ e.printStackTrace(); }
>
> }
>
> }
>
> private void print_content(HttpsURLConnection con){ if(con!=null){
>
> try {
>
> System.out.println("****** Content of the URL ********"); 
> BufferedReader br = new BufferedReader( new 
> InputStreamReader(con.getInputStream()));
>
> String input;
>
> while ((input = br.readLine()) != null){ System.out.println(input); } 
> br.close();
>
> } catch (IOException e) {
> e.printStackTrace();
> }
>
> }
>
> }
>
> }
> =============================
> Regards
> Somshekar C Kadam
> 9036660538
>
>
> On Thu, Sep 5, 2019 at 2:40 PM Somshekar C Kadam 
> <somkada...@gmail.com>
> wrote:
>
> > Hi Bernd,
> >
> > On My Ubuntu Machine I am able to compile Intel based Java programs 
> > no issue.
> > We have Armv7 target board openjdk installed, able to compile java
> program
> > and run on the board no issues,
> >
> > I run the curl command on the armv7 target board, able to connect to
> https
> > link and get the content, same when I use the program below provided 
> > it takes 15 ~20 seconds more using httpsurlconenction.
> >
> >
> > Now I wanted to try out alternative Apache httpclient to check if it 
> > can reduce time to connect same https link. I am not able to compile 
> > the program, I will provide the details in a while (added jar file 
> > for httpcore). So reuested to provide any link or steps
> >
> > Thanks in advance
> >
> > Regards
> > Somshekar C Kadam
> > 9036660538
> >
> >
> > On Thu, Sep 5, 2019 at 2:30 PM Bernd Eckenfels 
> > <e...@zusammenkunft.net>
> > wrote:
> >
> >> Hello,
> >>
> >> Are you able to compile and run any java programs?
> >>
> >> What is the error you are getting, what is the command you are 
> >> using to compile it and how does your source directory looks like?
> >>
> >> You can compile the sample client on other machines, if this helps 
> >> your development velocity.
> >>
> >> You can’t really compare native program (curl) speed with Java, but 
> >> it certainly should not be that different (I mean yes you can, it 
> >> just does not tell you much). Do you count startup Time? How did 
> >> you Test Java if
> it
> >> does not compile?
> >>
> >> Is the only reason you look into HTTPClient the delay you see with 
> >> URLConnection? Do you have a sample program for that which shows 
> >> the slowness?
> >> Gruss
> >> Bernd
> >>
> >>
> >> --
> >> http://bernd.eckenfels.net
> >>
> >> ________________________________
> >> Von: Somshekar C Kadam <somkada...@gmail.com>
> >> Gesendet: Donnerstag, September 5, 2019 10:53 AM
> >> An: HttpClient User Discussion; Somshekar kadam
> >> Betreff: Re: apache httpclient
> >>
> >> Hi Bernd,
> >> Thanks for the quick reply.
> >> Excuse me on the replyall part, my bad.
> >>
> >> when I use curl same https connection quickly returns within 2 
> >> seconds, ofcourse different cipher is used.
> >> Also I am not able to get sample apache httpclient compiled on 
> >> Ubuntu Linux machine, any link or steps which I can get to make it 
> >> compile and work will help.
> >>
> >> code
> >> =============
> >> package org.apache.hc.client5.http.examples;
> >>
> >> import java.security.cert.CertificateException;
> >> import java.security.cert.X509Certificate;
> >>
> >> import javax.net.ssl.SSLContext;
> >> import javax.net.ssl.SSLSession;
> >>
> >> import org.apache.hc.client5.http.classic.methods.HttpGet;
> >> import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
> >> import 
> >> org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
> >> import org.apache.hc.client5.http.impl.classic.HttpClients;
> >> import
> >> org.apache.hc.client5.http.impl.io
> >> .PoolingHttpClientConnectionManagerBuilder;
> >> import org.apache.hc.client5.http.io.HttpClientConnectionManager;
> >> import org.apache.hc.client5.http.protocol.HttpClientContext;
> >> import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
> >> import 
> >> org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder;
> >> import org.apache.hc.core5.http.io.entity.EntityUtils;
> >> import org.apache.hc.core5.http.ssl.TLS; import 
> >> org.apache.hc.core5.ssl.SSLContexts;
> >> import org.apache.hc.core5.ssl.TrustStrategy;
> >>
> >> /**
> >> * This example demonstrates how to create secure connections with a
> custom
> >> SSL
> >> * context.
> >> */
> >> public class ClientCustomSSL {
> >>
> >> public final static void main(final String[] args) throws Exception 
> >> { // Trust standard CA and those trusted by our custom strategy 
> >> final SSLContext sslcontext = SSLContexts.custom() 
> >> .loadTrustMaterial(new TrustStrategy() {
> >>
> >> @Override
> >> public boolean isTrusted(
> >> final X509Certificate[] chain,
> >> final String authType) throws
> >> CertificateException {
> >> final X509Certificate cert = chain[0]; return "CN=httpbin.org 
> >> ".equalsIgnoreCase(cert.getSubjectDN().getName());
> >> }
> >>
> >> })
> >> .build();
> >> // Allow TLSv1.2 protocol only
> >> final SSLConnectionSocketFactory sslSocketFactory =
> >> SSLConnectionSocketFactoryBuilder.create()
> >> .setSslContext(SSLContexts.createSystemDefault())
> >> .setTlsVersions(TLS.V_1_2)
> >> .build();
> >> final HttpClientConnectionManager cm =
> >> PoolingHttpClientConnectionManagerBuilder.create()
> >> .setSSLSocketFactory(sslSocketFactory)
> >> .build();
> >> try (CloseableHttpClient httpclient = HttpClients.custom()
> >> .setConnectionManager(cm)
> >> .build()) {
> >>
> >> final HttpGet httpget = new HttpGet("https://httpbin.org/";);
> >>
> >> System.out.println("Executing request " + httpget.getMethod() + " " 
> >> + httpget.getUri());
> >>
> >> final HttpClientContext clientContext = HttpClientContext.create(); 
> >> try (CloseableHttpResponse response = httpclient.execute(httpget, 
> >> clientContext)) {
> >>
> >> System.out.println("----------------------------------------");
> >> System.out.println(response.getCode() + " " + 
> >> response.getReasonPhrase());
> >>
> >> System.out.println(EntityUtils.toString(response.getEntity()));
> >>
> >> final SSLSession sslSession = clientContext.getSSLSession(); if 
> >> (sslSession != null) { System.out.println("SSL protocol " + 
> >> sslSession.getProtocol()); System.out.println("SSL cipher suite " + 
> >> sslSession.getCipherSuite()); } } } }
> >>
> >> }
> >> ===================
> >>
> >> Regards
> >> Somshekar C Kadam
> >> 9036660538
> >>
> >>
> >> On Thu, Sep 5, 2019 at 2:09 PM Bernd Eckenfels 
> >> <e...@zusammenkunft.net>
> >> wrote:
> >>
> >> > Hello,
> >> >
> >> > Certainly you can use the Apache HTTPClient to replace 
> >> > URLConnection,
> >> you
> >> > don’t need to do anything special on ARM other than having Java
> Runtime
> >> > installed.
> >> >
> >> > If you have a slow http download changes are high this is caused 
> >> > by
> slow
> >> > CPU, missing random numbers, slow network or server. All those
> >> conditions
> >> > might affect URLConnection or HTTPClient, so there is no 
> >> > guarantee
> that
> >> > switching to Apache HTTPClient will improve things.
> >> >
> >> > BTW your CC List is insane, why would you want to bother people 
> >> > like
> >> that?
> >> > Gruss
> >> > Bernd
> >> >
> >> >
> >> > --
> >> > http://bernd.eckenfels.net
> >> >
> >> > ________________________________
> >> > Von: Somshekar C Kadam <somkada...@gmail.com>
> >> > Gesendet: Donnerstag, September 5, 2019 10:26 AM
> >> > An: HttpClient User Discussion
> >> > Cc: annou...@apache.org; priv...@hc.apache.org; d...@hc.apache.org
> >> > Betreff: apache httpclient
> >> >
> >> > Hi All,
> >> > I am a newbie to Java.
> >> > We are going to try Apache httpclient as an alternative for 
> >> > openjdk httpsurl connection class.
> >> >
> >> > We see that using openjdk 8 and above we s eee that when using
> httpsurl
> >> > conenction we see a delay of 10 to 20 seconds to get content of 
> >> > the
> >> url. We
> >> > use Armv7, Linux. We wanted first to begin with to get normal
> httpclient
> >> > working on Ubuntu Linux machine.
> >> > Dont find any steps to get it working, is there any link how to 
> >> > use it
> >> on
> >> > ubuntu machine httpclient working, please point.
> >> >
> >> > Also you like to know hopefully this approach is correct to try 
> >> > Apachr httpsclient instaed of openjdk httpsurlconnection.
> >> > please advice
> >> > Regards
> >> > Somshekar C Kadam
> >> > 9036660538
> >> >
> >> >
> >> > On Thu, Sep 5, 2019 at 1:52 PM Oleg Kalnichevski 
> >> > <ol...@apache.org>
> >> wrote:
> >> >
> >> > > The Apache HttpComponents project is pleased to announce 4.4.12 
> >> > > GA release of HttpComponents Core.
> >> > >
> >> > > This is a maintenance release that corrects a number of defects 
> >> > > discovered since release 4.4.11.
> >> > >
> >> > > Please note that as of 4.4 HttpCore requires Java 1.6 or newer.
> >> > >
> >> > > IMPORTANT: Users of HttpCore 4.x GA releases are strongly 
> >> > > encouraged
> >> to
> >> > > evaluate new HttpCore 5.0 APIs and give the project developers 
> >> > > feedback, share critique or propose changes.
> >> > >
> >> > > Download -
> >> > > <http://hc.apache.org/downloads.cgi>
> >> > > Release notes -
> >> > > <
> http://www.apache.org/dist/httpcomponents/httpcore/RELEASE_NOTES.txt
> >> >
> >> > > HttpComponents site -
> >> > > <http://hc.apache.org/>
> >> > >
> >> > > About HttpComponents Core
> >> > >
> >> > > HttpCore is a set of low level HTTP transport components that 
> >> > > can be used to build custom client and server side HTTP 
> >> > > services with a minimal footprint. HttpCore supports two I/O 
> >> > > models: a blocking I/O model based on the classic Java I/O and 
> >> > > a non-blocking, event driven I/O model based on Java NIO.
> >> > >
> >> > >
> >> > >
> >> > >
> ---------------------------------------------------------------------
> >> > > To unsubscribe, e-mail: 
> >> > > httpclient-users-unsubscr...@hc.apache.org
> >> > > For additional commands, e-mail:
> httpclient-users-h...@hc.apache.org
> >> > >
> >> > >
> >> >
> >>
> >
>


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to