From 52a631da4b83f66566b6597e1e175a3e40342f79 Mon Sep 17 00:00:00 2001 From: Sven Woltmann Date: Thu, 10 Mar 2016 10:08:22 +0100 Subject: [PATCH] Data string sent to the API is converted to byte array only once. --- .../com/sparkpost/transport/RestConnection.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libs/sparkpost-lib/src/main/java/com/sparkpost/transport/RestConnection.java b/libs/sparkpost-lib/src/main/java/com/sparkpost/transport/RestConnection.java index 0b2baee..acfc6d4 100644 --- a/libs/sparkpost-lib/src/main/java/com/sparkpost/transport/RestConnection.java +++ b/libs/sparkpost-lib/src/main/java/com/sparkpost/transport/RestConnection.java @@ -167,14 +167,19 @@ private HttpURLConnection createConnectionObject(String path, Method method) thr // Send HTTP data (payload) to server private void sendData(HttpURLConnection conn, String data) throws SparkPostException { - String lenStr; - try { - lenStr = Integer.toString(data.getBytes(DEFAULT_CHARSET).length); - } catch (UnsupportedEncodingException e) { + byte[] bytes = null; + try + { + bytes = data.getBytes(DEFAULT_CHARSET); + } + catch (UnsupportedEncodingException e) + { // This should never happen. UTF-8 should always be available but we // have to catch it so pass it on if it fails. throw new SparkPostException(e); } + + String lenStr = Integer.toString(bytes.length); conn.setRequestProperty("Content-Length", lenStr); conn.setRequestProperty("Content-Type", "application/json"); @@ -184,7 +189,7 @@ private void sendData(HttpURLConnection conn, String data) throws SparkPostExcep // Send data. At this point connection to server may not be established, // but writing data to it will trigger the connection. try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) { - wr.write(data.getBytes(DEFAULT_CHARSET)); + wr.write(bytes); wr.flush(); } catch (IOException ex) { throw new SparkPostException("Error sending request data:" + ex.toString());