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
>> > >
>> > >
>> >
>>
>

Reply via email to