2016-01-26 5 views
8

Ich versuche, die tutorial on AzureAzure MobileServicePushFailedException auf Android

Jetzt ist die offline storage funktioniert gut eine Anwendung mit offline sync und anschließend zu bauen, aber keine Elementen hinzugefügt, um auf dem Server mit folgenden Ausnahme:

 Error syncAsync com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException 
java.util.concurrent.ExecutionException: com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException 
    at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) 
    at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) 
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) 
    at irisrecognition.example.com.irisrecognition.util.ItemManager$5.doInBackground(ItemManager.java:237) 
    at irisrecognition.example.com.irisrecognition.util.ItemManager$5.doInBackground(ItemManager.java:232) 
    at android.os.AsyncTask$2.call(AsyncTask.java:288) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
Caused by: com.microsoft.windowsazure.mobileservices.table.sync.push.MobileServicePushFailedException 
    at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.pushOperations(MobileServiceSyncContext.java:939) 
    at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.consumePushSR(MobileServiceSyncContext.java:834) 
    at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext.access$1100(MobileServiceSyncContext.java:85) 
    at com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncContext$PushSyncRequestConsumer.run(MobileServiceSyncContext.java:1127) 

Hier ist der Code für onCreate()

try { 
     mClient = new MobileServiceClient(
       Constants.ROOT_URL, 
       "kfogvaexzeDLYyPbRmBiHxQEBUYpku30", 
       this).withFilter(new ProgressFilter()); 

     initLocalStore().get(); 
     syncAsync(); 
     refreshItemsFromTable(); 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

und einige mehr ...

Berechtigungen für meine Tabelle sind mit Application Key zulässig. Irgendwelche Ideen?

EDIT:

Diese auf dem Server in der Protokolldatei angezeigt:

ERROR 
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' } 
+0

Veröffentlichen Sie die Stack-Trace – BanditoBunny

+0

Debuggen Sie mit Fiddler, um zu sehen, welche Anrufe an den Server gesendet werden. Was sind die Details der Push-Failed-Ausnahme? –

+0

Bearbeiten der Frage zum Einfügen der gesamten Ausnahme jetzt. Keine Ahnung, was Fiddler es sich ansehen wird – 4ndro1d

Antwort

0

Ich bin nicht sicher, ob dies die Antwort aber tut "Constants.ROOT_URL" gehört den Protokoll-Header-String wie " http://myurl.com "? Der ENOTFOUND-Fehler bedeutet, dass die Adresse des getaddrinfo-Aufrufs nicht aufgelöst werden konnte. Sie können "myurl.com" ohne den Protokollteil des URI versuchen. Außerdem benötigt die Methode einen Klassentyp Uri für das Argument. Es sieht so aus, als ob Sie den Stack-Trace vom MalformedURIException-Handler erhalten. (Der Anruf verwendet wahrscheinlich https, auch wenn Sie etwas anderes angegeben haben).

0

Soweit ich herausgefunden habe, ist das Problem, dass meine Tabellen auf Anonmyous Access gesetzt sind. Ich legte sie auf Authenticated Only und Synchronisierung funktionierte wieder gut. Wie auch immer ich will, dass einige Tabellen ohne Authentifizierung (gelesen von allen Benutzern) und überprüfen, ob ich das irgendwie beheben kann