java azure storage error“枚举结果”

我正在使用以下代码消耗android azure存储API:

try { // Retrieve storage account from connection-string. CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString); // Create the blob client. CloudBlobClient blobClient = storageAccount.createCloudBlobClient(); // Retrieve reference to a previously created container. CloudBlobContainer container = blobClient.getContainerReference("appstar"); // Loop over blobs within the container and output the URI to each of them. for (ListBlobItem blobItem : container.listBlobs()) { System.out.println(blobItem.getUri()); } // hide dat loader progress.dismiss(); } catch (Exception e) { System.out.println("There was a problem"); // Output the stack trace. e.printStackTrace(); // hide dat loader progress.dismiss(); } 

但是当我进入for循环时,我收到以下错误:

 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ java.util.NoSuchElementException: An error occurred while enumerating the result, check the original exception for details. 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at com.microsoft.azure.storage.core.LazySegmentedIterator.hasNext(LazySegmentedIterator.java:113) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at com.k.azurestorage.ConnectionSettingsForm.btn_onCreateSubmitted(ConnectionSettingsForm.java:127) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at android.view.View$1.onClick(View.java:4015) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at android.view.View.performClick(View.java:4780) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at android.view.View$PerformClick.run(View.java:19866) 07-23 12:30:46.371 2362-2362/com.k.azurestorage W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at android.os.Looper.loop(Looper.java:135) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5257) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ Caused by: com.microsoft.azure.storage.StorageException: Network operations may not be performed on the main thread. 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:224) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at com.microsoft.azure.storage.core.LazySegmentedIterator.hasNext(LazySegmentedIterator.java:109) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ ... 14 more 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ Caused by: android.os.NetworkOnMainThreadException 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:418) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at java.net.InetAddress.getAllByName(InetAddress.java:215) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29) 07-23 12:30:46.372 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232) 07-23 12:30:46.382 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:332) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:500) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:125) 07-23 12:30:46.393 2362-2362/com.k.azurestorage W/System.err﹕ ... 15 more 

任何想法这意味着什么?

首先,让我们检查一下导致奇怪错误的基础知识。 🙂

  1. 您能否确认您使用的是Android库而不是Java库 ?
  2. 你能确认你的Android清单中有互联网权限吗? 有关示例 ,请参阅我们的示例

如果这些都不是您的问题,那么您可以执行以下操作吗?

  1. 发布完整的exception跟踪。 可迭代API要求我们返回NoSuchElementException,因此我们将实际发生exception的原因包装在其中。 完整的堆栈跟踪应该为我们提供进一步调试所需的内容。
  2. 发布您正在使用的Android库的版本以及您正在运行的Android版本。 根据更改日志,我们过去曾遇到过与iterables相关的一些Android错误,这将让我们确认您没有遇到过这些错误。

留下其他人的调试步骤,但这里完整的堆栈跟踪给出了答案。 在完整的strack跟踪中,您可以看到NetworkOnMainThreadException,并显示消息“可能无法在主线程上执行网络操作”。 由于网络操作可能很慢,因此默认情况下Android会阻止它们在主线程上进行。 如果您搜索此错误,您将找到有关如何在不阻止UI线程的情况下处理网络操作的各种示例。