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.