我会尽力帮助您翻译。以下是需要翻译的内容:
我的表的权限设置为允许,使用应用程序密钥进行设置。有什么建议吗?
编辑:
这出现在服务器的日志文件中:
我正在尝试构建一个具有离线同步
功能的应用程序,并遵循Azure教程。
现在离线存储
运作良好,但是没有任何项目被添加到服务器上,出现了以下异常:
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)
这里是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();
}
和一些其他的...
private AsyncTask<Void, Void, Void> initLocalStore() throws MobileServiceLocalStoreException, ExecutionException, InterruptedException {
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
mPullQuery = mClient.getTable(IrisEntry.class).where().orderBy("__createdAt", QueryOrder.Descending);
MobileServiceSyncContext syncContext = mClient.getSyncContext();
SQLiteLocalStore localStore = new SQLiteLocalStore(mClient.getContext(), "OfflineStore", null, 1);
SimpleSyncHandler handler = new SimpleSyncHandler();
Map<String, ColumnDataType> tableDefinition = new HashMap<String, ColumnDataType>();
tableDefinition.put("id", ColumnDataType.String);
tableDefinition.put("text", ColumnDataType.String);
tableDefinition.put("device", ColumnDataType.String);
tableDefinition.put("segmentationAlgo", ColumnDataType.String);
tableDefinition.put("imageUri", ColumnDataType.String);
tableDefinition.put("containerName", ColumnDataType.String);
tableDefinition.put("resourceName", ColumnDataType.String);
tableDefinition.put("sasQueryString", ColumnDataType.String);
tableDefinition.put("userId", ColumnDataType.String);
tableDefinition.put("complete", ColumnDataType.Boolean);
localStore.defineTable(Constants.TABLE_IRIS, tableDefinition);
syncContext.initialize(localStore, handler).get();
mIrisTable = mClient.getSyncTable(IrisEntry.class);
} catch (final Exception e) {
e.printStackTrace();
}
return null;
}
};
return runAsyncTask(task);
}
public void syncAsync() {
if (isNetworkAvailable()) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
mClient.getSyncContext().push().get();
mIrisTable.pull(mPullQuery).get();
Log.e(LOGTAG, "Success syncAsync");
} catch (Exception e) {
Log.e(LOGTAG, "Error syncAsync " + e.getMessage());
e.printStackTrace();
}
return null;
}
}.execute();
} else {
Log.e(LOGTAG, "You are not online, re-sync later!");
}
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
我的表的权限设置为允许,使用应用程序密钥进行设置。有什么建议吗?
编辑:
这出现在服务器的日志文件中:
ERROR
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }