Yeah probably it has something to do with all the initialization stuff...I
just tried *not* using the Apache HttpClient, with the following code:

String myHttpsUrl = "https://mip.sunrise.ch";;
URL url = new URL(myHttpsUrl);
URLConnection urlConnection = url.openConnection();

BufferedReader br = new BufferedReader(new
InputStreamReader(ucon.getInputStream()));
String line;
StringBuilder htmlContent = new StringBuilder();
while ((line = br.readLine()) != null) {
    htmlContent.append(line);
}

(I'm reading the whole content just to make sure my request has been
executed and fetched..).

Anyway....it seems much faster!! (first request around 2 seconds, compared
to the HttpClient's 6, 10 or 20 seconds).

However there is a problem: with the current https url it actually doesn't
work (it worked for other https addresses). I get back the following error
(with the url "https://mip.sunrise.ch";):

java.io.IOException: SSL handshake failure: Failure in SSL library, usually
a protocol error
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
(external/openssl/ssl/s23_clnt.c:585 0xaf589f78:0x00000000)
    at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.nativeconnect(Native
Method)
    at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:308)
    at
org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.getSecureSocket(HttpConnection.java:173)
    at
org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection$HttpsEngine.connect(HttpsURLConnection.java:408)
    at
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.sendRequest(HttpURLConnection.java:1227)
    at
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.doRequestInternal(HttpURLConnection.java:1554)
    at
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.doRequest(HttpURLConnection.java:1547)
    at
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1055)
    at
org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection.getInputStream(HttpsURLConnection.java:257)

It seems like an ssl version error...mmmm....
Maybe I have to specify explicitly this version somewhere? Or maybe some
certificates? :S

If anyone has an idea please let me know :)


Thanks everyone!
Yuvi

On Tue, Jan 26, 2010 at 8:29 PM, Jason Proctor <
[email protected]> wrote:

> SSL requires a good chunk of crypto code. maybe its initialisation &
> code-loading time is causing the delay on first use?
>
> one way to find out is to write something as bare-bones as possible (ie
> without the Apache HTTP library, which is large and complex) and profile it
> to see where the time is going.
>
>
>
>
>  Hi
>>
>> we're experiencing the same thing - pretty much identical code
>> initial connection can take up to 30secs but subsequent connections
>> are only a sec or two
>>
>> have reproduced on both 1.5 and 2.0 emulators as well as on devices
>> HTC Hero, Motoral Cliq and Droid
>>
>> if we change the URL back to HTTP behavior is expected i.e a second or
>> two
>>
>> Ronan
>>
>> On Jan 23, 11:31 pm, Yuvi <[email protected]> wrote:
>>
>>>  Hi!
>>>
>>>  I'm developing my first android app, which needs to make some http and
>>> https
>>>  requests.
>>>  I'm using the apache HttpClient. So far everything works fine...but I
>>>  noticed something strange:
>>>  almost every time I start the app, the first request is taking really a
>>> long
>>>  time, while the next requests take much less. I tried executing the same
>>>  request several times in a row, and with the same result.
>>>
>>>  Here's part of the code I use to make an http request:
>>>
>>>  HttpParams httpParams = new BasicHttpParams();
>>>  HttpConnectionParams.setConnectionTimeout(httpParams, 30000);
>>>  HttpConnectionParams.setSoTimeout(httpParams, 30000);
>>>  client = new DefaultHttpClient(httpParams);
>>>
>>>  try {
>>>     HttpGet getRequest = new HttpGet ("https://mip.sunrise.ch";);
>>>     HttpResponse response = client.execute(getRequest);
>>>     // ....
>>>
>>>  } catch (Exception e) { }
>>>
>>>  I tested the app on the various versions of the emulator, and on the htc
>>>  hero (android 1.5). With the emulator with android 2.0 it seems that
>>> problem
>>>  doesn't occur...mmm? hehe
>>>
>>>  Someone has an idea of what am I doing wrong?
>>>
>>>  Thanks!!
>>>  Yuvi
>>>
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]<android-developers%[email protected]>
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>>
>
>
> --
> jason.vp.engineering.particle
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to