From 8368c427168d4ec6def44be1a9a139d5a62c1245 Mon Sep 17 00:00:00 2001 From: Daniel Freiling Date: Wed, 6 Jul 2016 16:06:32 +0200 Subject: [PATCH 1/4] Fix HEAD requests on large files for Android ByteArrayOutputStream was always allocated with the size of content-length, even on HEAD requests --- .../src/main/java/org/nativescript/widgets/Async.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/android/widgets/src/main/java/org/nativescript/widgets/Async.java b/android/widgets/src/main/java/org/nativescript/widgets/Async.java index bc08d654d..1d3fd76ea 100644 --- a/android/widgets/src/main/java/org/nativescript/widgets/Async.java +++ b/android/widgets/src/main/java/org/nativescript/widgets/Async.java @@ -41,6 +41,7 @@ public class Async { private static final String DeleteMethod = "DELETE"; private static final String GetMethod = "GET"; + private static final String HeadMethod = "HEAD"; private static CookieManager cookieManager; public static class KeyValuePair @@ -300,7 +301,10 @@ public class Async // build the result result.getHeaders(connection); - result.readResponseStream(connection, openedStreams, options); + if (!requestMethod.equals(HeadMethod)) + { + result.readResponseStream(connection, openedStreams, options); + } // close the opened streams (saves copy-paste implementation // in each method that throws IOException) From 7c6083415187878898c8bc5b44d95cdd2c56b582 Mon Sep 17 00:00:00 2001 From: Daniel Freiling Date: Wed, 6 Jul 2016 16:10:06 +0200 Subject: [PATCH 2/4] Fix DELETE request sending contents on Android Strings compared by reference and not contents --- .../widgets/src/main/java/org/nativescript/widgets/Async.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/widgets/src/main/java/org/nativescript/widgets/Async.java b/android/widgets/src/main/java/org/nativescript/widgets/Async.java index 1d3fd76ea..e09004211 100644 --- a/android/widgets/src/main/java/org/nativescript/widgets/Async.java +++ b/android/widgets/src/main/java/org/nativescript/widgets/Async.java @@ -288,7 +288,7 @@ public class Async } // Do not attempt to write the content (body) for DELETE method, Java will throw directly - if (requestMethod != DeleteMethod) + if (!requestMethod.equals(DeleteMethod)) { options.writeContent(connection, openedStreams); } From e7a894f1cdc6f0fdb85016184f13e288b6b9efe9 Mon Sep 17 00:00:00 2001 From: Daniel Freiling Date: Wed, 6 Jul 2016 16:10:58 +0200 Subject: [PATCH 3/4] Rename Async.Http method variables to follow Java conventions --- .../main/java/org/nativescript/widgets/Async.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/android/widgets/src/main/java/org/nativescript/widgets/Async.java b/android/widgets/src/main/java/org/nativescript/widgets/Async.java index e09004211..5a9d0438a 100644 --- a/android/widgets/src/main/java/org/nativescript/widgets/Async.java +++ b/android/widgets/src/main/java/org/nativescript/widgets/Async.java @@ -39,9 +39,9 @@ public class Async public static class Http { - private static final String DeleteMethod = "DELETE"; - private static final String GetMethod = "GET"; - private static final String HeadMethod = "HEAD"; + private static final String DELETE_METHOD = "DELETE"; + private static final String GET_METHOD = "GET"; + private static final String HEAD_METHOD = "HEAD"; private static CookieManager cookieManager; public static class KeyValuePair @@ -275,7 +275,7 @@ public class Async HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // set the request method - String requestMethod = options.method != null ? options.method.toUpperCase(Locale.ENGLISH) : GetMethod; + String requestMethod = options.method != null ? options.method.toUpperCase(Locale.ENGLISH) : GET_METHOD; connection.setRequestMethod(requestMethod); // add the headers @@ -288,7 +288,7 @@ public class Async } // Do not attempt to write the content (body) for DELETE method, Java will throw directly - if (!requestMethod.equals(DeleteMethod)) + if (!requestMethod.equals(DELETE_METHOD)) { options.writeContent(connection, openedStreams); } @@ -301,7 +301,7 @@ public class Async // build the result result.getHeaders(connection); - if (!requestMethod.equals(HeadMethod)) + if (!requestMethod.equals(HEAD_METHOD)) { result.readResponseStream(connection, openedStreams, options); } From 7618abba87cfceeb7f5e9decd05a7ade00d5cb00 Mon Sep 17 00:00:00 2001 From: Daniel Freiling Date: Wed, 6 Jul 2016 16:15:32 +0200 Subject: [PATCH 4/4] Fix indentation --- .../widgets/src/main/java/org/nativescript/widgets/Async.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/widgets/src/main/java/org/nativescript/widgets/Async.java b/android/widgets/src/main/java/org/nativescript/widgets/Async.java index 5a9d0438a..ab334b0c5 100644 --- a/android/widgets/src/main/java/org/nativescript/widgets/Async.java +++ b/android/widgets/src/main/java/org/nativescript/widgets/Async.java @@ -41,7 +41,7 @@ public class Async { private static final String DELETE_METHOD = "DELETE"; private static final String GET_METHOD = "GET"; - private static final String HEAD_METHOD = "HEAD"; + private static final String HEAD_METHOD = "HEAD"; private static CookieManager cookieManager; public static class KeyValuePair @@ -302,7 +302,7 @@ public class Async // build the result result.getHeaders(connection); if (!requestMethod.equals(HEAD_METHOD)) - { + { result.readResponseStream(connection, openedStreams, options); }