diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/OCHttpClient.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/OCHttpClient.java index e255ceb..350024d 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/OCHttpClient.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/OCHttpClient.java @@ -32,6 +32,7 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; +import java.net.ProtocolException; import java.net.URL; import java.nio.charset.Charset; @@ -152,29 +153,8 @@ public class OCHttpClient { HttpURLConnection urlConnection = null; try { urlConnection = (HttpURLConnection) url.openConnection(); - urlConnection.setRequestMethod(method); - urlConnection.setRequestProperty("User-Agent", _userAgent); - urlConnection.setInstanceFollowRedirects(true); - if (!"GET".equals(method)) { - urlConnection.setDoOutput(true); - } - urlConnection.setRequestProperty("Content-Type", "application/json"); - urlConnection.setRequestProperty("Accept", "application/json"); - urlConnection.setRequestProperty("Transfer-Encoding", "chunked"); - - String basicAuth = "Basic " + - Base64.encodeToString((_username + ":" + _password).getBytes(), Base64.NO_WRAP); - urlConnection.setRequestProperty("Authorization", basicAuth); - urlConnection.setChunkedStreamingMode(0); - - if (!"GET".equals(method)) { - OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream()); - out.write(requestBody.getBytes(Charset.forName("UTF-8"))); - out.close(); - } - - response = handleHTTPResponse(urlConnection, skipError); } catch (IOException e) { + Log.e(OCHttpClient.TAG, "Failed to open connection to server: " + e); throw new OCSyncException(R.string.err_sync_http_request_ioexception, OCSyncErrorType.IO); } finally { if (urlConnection != null) { @@ -182,6 +162,43 @@ public class OCHttpClient { } } + if (urlConnection == null) { + Log.e(OCHttpClient.TAG, "Failed to open connection to server: null urlConnection"); + throw new OCSyncException(R.string.err_sync_http_request_ioexception, OCSyncErrorType.IO); + } + + try { + urlConnection.setRequestMethod(method); + } catch (ProtocolException e) { + Log.e(OCHttpClient.TAG, "Fatal error when setting request method: " + e); + throw new OCSyncException(R.string.err_sync_http_request_ioexception, OCSyncErrorType.IO); + } + urlConnection.setRequestProperty("User-Agent", _userAgent); + urlConnection.setInstanceFollowRedirects(true); + if (!"GET".equals(method)) { + urlConnection.setDoOutput(true); + } + urlConnection.setRequestProperty("Content-Type", "application/json"); + urlConnection.setRequestProperty("Accept", "application/json"); + urlConnection.setRequestProperty("Transfer-Encoding", "chunked"); + + String basicAuth = "Basic " + + Base64.encodeToString((_username + ":" + _password).getBytes(), Base64.NO_WRAP); + urlConnection.setRequestProperty("Authorization", basicAuth); + urlConnection.setChunkedStreamingMode(0); + + if (!"GET".equals(method)) { + try { + OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream()); + out.write(requestBody.getBytes(Charset.forName("UTF-8"))); + out.close(); + } catch (IOException e) { + Log.e(OCHttpClient.TAG, "Failed to open connection to server: " + e); + throw new OCSyncException(R.string.err_sync_http_write_failed, OCSyncErrorType.IO); + } + } + + response = handleHTTPResponse(urlConnection, skipError); return response; } diff --git a/src/main/res/values-en-rGB/strings.xml b/src/main/res/values-en-rGB/strings.xml index 7bbcbbe..9bfbb89 100644 --- a/src/main/res/values-en-rGB/strings.xml +++ b/src/main/res/values-en-rGB/strings.xml @@ -183,4 +183,5 @@ No Show sync notifications Synchronisation complete + Error #19: Failed to write HTTP stream when pushing data to server. diff --git a/src/main/res/values-en/strings.xml b/src/main/res/values-en/strings.xml index 97e2561..229a81c 100644 --- a/src/main/res/values-en/strings.xml +++ b/src/main/res/values-en/strings.xml @@ -159,5 +159,6 @@ No Show sync notifications Synchronization complete + Error #19: Failed to write HTTP stream when pushing data to server. diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index 562530a..f2f3ee6 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -183,4 +183,5 @@ Non Afficher les notifications de synchronisation Synchronisation terminée + Erreur #19: échec d\'écriture du flux HTTP lors de la poussée d\'informations vers le serveur. diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 00b6c86..610caec 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -272,4 +272,5 @@ No Show sync notifications Synchronization complete + Error #19: Failed to write HTTP stream when pushing data to server.