Hey guys,
This is my first post to the Android Developers group. I have been
working with HTTP communication in the Android SDK and have noticed
that calls to a web service through my app are very slow (taking
800+ms on high speed wifi). They take less than 100ms if I call the
web service through the phone's browser. I am developing on a Google
Nexus One. The size of the data returned is very small, <1K. I have
tried enabling gzip compression, and that helps slightly but I assume
there is another problem at hand. I have tried using SOAP with the
ksoap2-android library, as well as making things simple using
HttpClient and InputStreamReader. Below is my code for the fastest I
can make the app perform; using no SOAP, and using GZIP compression. I
apologize for the lengthy code -- I think all of it is beneficial for
determining the best way to make this request and response happen
faster.

[code]
public String GetRest()
        {

        long startTime = System.currentTimeMillis();
        String result = "";

        Log.v("time", "Beginning rest: " + (System.currentTimeMillis() -
startTime) + "ms");

            try
            {
                HttpClient client = new DefaultHttpClient();
                HttpGet request = new HttpGet("https://usad.enlyght.com/ws/
AndroidService.asmx/GetWebServiceVersion");
                request.addHeader("Accept-Encoding", "gzip");

                Log.v("time", "Before call: " + (System.currentTimeMillis() -
startTime) + "ms");
                HttpResponse response = client.execute(request);
                InputStream instream = response.getEntity().getContent();
                Header contentEncoding = response.getFirstHeader("Content-
Encoding");
                if (contentEncoding != null &&
contentEncoding.getValue().equalsIgnoreCase("gzip")) {
                    instream = new GZIPInputStream(instream);
                }
                InputStreamReader isreader = new InputStreamReader(instream);
                BufferedReader reader = new BufferedReader(isreader);
                StringWriter sw = new StringWriter();

                String read;
                while ((read = reader.readLine()) != null) {
                        result += read;
                }

                client.getConnectionManager().shutdown();
        }
        catch (Exception e) {}
        Log.v("time", "End rest: " + (System.currentTimeMillis() -
startTime) + "ms");

        return result;
        }
[/code]

Regards,
Adam Smith
Norsoft

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