将数据从 Azure 移动服务检索到 java 中的 android 应用程序中

本文关键字:中的 java android 应用程序 检索 数据 Azure 移动 服务 | 更新日期: 2023-09-27 18:35:01

我有一个Azure移动服务,它从多个源检索数据并将其提供给我的移动应用程序使用。 到目前为止,我已经在开发Windows移动应用程序中使用它,并且它工作得很好。现在我想将相同的应用程序扩展到 android ,我想利用来自同一 azure 移动服务的数据。

用于检索数据的 Windows 应用程序的 C# 代码是

MobileServiceClient mobileservice = new MobileServiceClient("url", "key");
var aod_return = await mobileservice.InvokeApiAsync("CCOOutageHistoryData", HttpMethod.Get, null);
List<Data> aod_result = JsonConvert.DeserializeObject<List<Data>>(aod_return.ToString());
VList3.ItemsSource = aod_result;

我尝试在 JAVA 中将其用于安卓应用程序

try {
   mClient = new MobileServiceClient("url", "key", this);

   mClient.invokeApi("CCOOutageHistoryData",null, "GET", null, new ApiJsonOperationCallback() {
      @Override
      public void onCompleted(JsonElement jsonElement, Exception e, ServiceFilterResponse serviceFilterResponse) {
         GsonBuilder gsonb = new GsonBuilder();
         Gson gson = gsonb.create();
         JsonArray array = jsonElement.getAsJsonArray();
         List<MyObject> myObjects = new ArrayList<MyObject>();
            for(int i = 0; i < array.size(); i++) {
               myObjects.add(gson.fromJson(array.get(i).getAsJsonObject().toString(), MyObject.class));
            }
       }
   });
} catch (MalformedURLException e) {
   // Do nothing
}

但是,当我给出断点时,初始化mclient后它不会进入下一行代码,而且我用于mclient.Incokeapi的语法据说已被弃用。 你能指出错误并帮助我在 Java 的新语法中实现上述 C# 代码吗?

我在构建代码时收到以下异常。

invoke is not implemented
java.lang.UnsupportedOperationException: invoke is not implemented
    at com.jetbrains.cidr.lang.refactoring.introduce.OCBaseIntroduceHandler.invoke(OCBaseIntroduceHandler.java:263)
    at com.intellij.refactoring.actions.BaseRefactoringAction.actionPerformed(BaseRefactoringAction.java:125)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$3.performAction(IdeKeyEventDispatcher.java:593)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:644)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:483)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:213)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:538)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

我试过使用

mClient.invokeApi("CCOOutageHistoryData",null, "GET", null, new ApiJsonOperationCallback() {
                @Override
                public void onCompleted(JsonElement jsonElement, Exception e, ServiceFilterResponse serviceFilterResponse) {
                    GsonBuilder gsonb = new GsonBuilder();
                    Gson gson = gsonb.create();                    JsonArray array = jsonElement.getAsJsonArray();
                    List<MyObject> myObjects = new ArrayList<MyObject>();
                    for(int i = 0; i < array.size(); i++)
                    {
                        myObjects.add(gson.fromJson(array.get(i).getAsJsonObject().toString(), MyObject.class));
                    }
                }
            });

但不起作用. 有人可以帮我解决这个问题吗

将数据从 Azure 移动服务检索到 java 中的 android 应用程序中

根据我的理解,您希望使用 Java for Android 从移动服务的 JavaScript 后端中的自定义 API 端点检索数据,就像您在 C# 中的代码一样。

假设您熟悉 C#,nto Java。我认为您可以尝试查看类 MobileServiceClient 的 javadoc,以了解如何使用具有不同参数invokeApi函数。我找不到这个javadoc,但我认为你可以从 https://github.com/Azure/azure-mobile-services/blob/master/sdk/android/src/sdk/src/main/java/com/microsoft/windowsazure/mobileservices/MobileServiceClient.java 的类MobileServiceClient源代码的注释中获得类似的帮助。

同时,下面有一些官方教程和博客可以帮助学习原理。

  1. 如何:在 JavaScript 后端移动服务中定义自定义 API 终结点
  2. 文档的第 How to: Call a custom API 部分How to use the Android client library for Mobile Services
  3. 来自 MSDN 的博客Custom API in Azure Mobile Services – Client SDKs

希望对您有所帮助。此致敬意。


更新:

后端的响应内容如下:

{"name": "peter", "age": 28}

Java 代码如下:

public class Person {
   private String name;
   private int age;
   ....Getting & Setting Methods
}
// The code `Person.class` as the Class<E> clazz argument for the function invokeApi, not null
mClient.invokeApi("<controllerName>", "GET", Person.class);