Forráskód Böngészése

fixed it for plain http connections

tobiaskaminsky 7 éve
szülő
commit
2e4c49202f

+ 24 - 17
src/main/java/com/owncloud/android/utils/ConnectivityUtils.java

@@ -24,22 +24,24 @@
 package com.owncloud.android.utils;
 
 import android.accounts.Account;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
 import android.content.Context;
 
 import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.Device;
-import com.owncloud.android.MainApp;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.lib.common.OwnCloudAccount;
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.OwnCloudClientFactory;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 
+import org.apache.commons.httpclient.methods.GetMethod;
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
 
 public class ConnectivityUtils {
 
@@ -53,27 +55,28 @@ public class ConnectivityUtils {
                     OwnCloudAccount ocAccount = new OwnCloudAccount(account, context);
                     OwnCloudVersion serverVersion = AccountUtils.getServerVersion(account);
 
-                    URL url;
+                    String url;
                     if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
-                        url = new URL(ocAccount.getBaseUri() + "/index.php/204");
+                        url = ocAccount.getBaseUri() + "/index.php/204";
                     } else {
-                        url = new URL(ocAccount.getBaseUri() + "/status.php");
+                        url = ocAccount.getBaseUri() + "/status.php";
                     }
-                    
-                    HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
-                    urlc.setRequestProperty("User-Agent", MainApp.getUserAgent());
-                    urlc.setRequestProperty("Connection", "close");
-                    urlc.setConnectTimeout(2500);
-                    urlc.connect();
 
+                    GetMethod get = new GetMethod(url);
+                    OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(account, context);
+
+                    int status = client.executeMethod(get);
+                    
                     if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
-                        return !(urlc.getResponseCode() == 204 && urlc.getContentLength() == 0);
+                        return !(status == 204 && get.getResponseContentLength() == -1);
                     } else {
-                        if (urlc.getResponseCode() == 200) {
-                            // try parsing json to verify response
+                        if (status == 200) {
                             try {
-                                new JSONObject(urlc.getResponseMessage());
-                                return false;
+                                // try parsing json to verify response
+                                // check if json contains maintenance and it should be false
+
+                                String json = get.getResponseBodyAsString();
+                                return new JSONObject(json).getBoolean("maintenance");
                             } catch (JSONException e) {
                                 return true;
                             }
@@ -86,6 +89,10 @@ public class ConnectivityUtils {
                 Log_OC.e(TAG, "Error checking internet connection", e);
             } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) {
                 Log_OC.e(TAG, "Account not found", e);
+            } catch (OperationCanceledException e) {
+                e.printStackTrace();
+            } catch (AuthenticatorException e) {
+                e.printStackTrace();
             }
         }