我正在尝试一些非常简单的事情。我有一个名为" missingvehiclesfrominventoryjob"它只是从标准SQL查询返回一个记录集。
我可以轻松地在我的WinForms和Windows Phone应用程序中执行此操作,但我无法弄清楚如何在Android App上执行此操作。
这是我的代码:(在Android Studio中没有编译):
msClient.invokeApi("missingvehiclesfrominventoryjob", kd, new
ApiOperationCallback<List<InventoryProspects>>(){
@Override
public void onCompleted(List<InventoryProspects> missingVehicles, Exception e,
ServiceFilterResponse serviceFilterResponse){
for (InventoryProspects item : missingVehicles){
mAdapter.add(item);
}
}
});
问题是Callback参数中的 List 。我不知道如何表明invoiceAPI调用将从数据库返回多行,我无法在文档中的任何位置找到解释方法。我也无法在互联网上找到任何一个例子。
我确信我不是唯一一个尝试这样做的人。
提前致谢
Chuck Giddens
答案 0 :(得分:3)
我为克服这个问题所做的是调用一个不同的invokeApi重载,它返回一个JsonElement,然后将它反序列化为我的对象,如下所示:
mClient.invokeApi("MyCustomApi",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));
}
}
});
答案 1 :(得分:1)
我还没有机会测试它(将在我有时间并根据需要编辑答案时尝试)但我的想法是Android SDK不会让你做你自己做的事情#39重新尝试做。 invokeApi方法期望将强类型类设置为响应类型(或者您可以使用原始JSON方法)。在这种情况下,您试图说您想要一个项目列表,但我认为这不会起作用。我认为你需要创建一个新类(即missingvehiclesfrominventoryjobResponse),它包含一个List&lt;类型的属性。 InventoryProspects取代。请注意,您需要更改方法调用以实际匹配invokeApi的一个可用选项,我不相信它现在正在做的事情。您可以在此处详细了解该方法的不同格式:http://blogs.msdn.com/b/carlosfigueira/archive/2013/06/19/custom-api-in-azure-mobile-services-client-sdks.aspx
或者,您可以对表端点使用表方法,其中read期望返回结果集合。
答案 2 :(得分:0)
您是否尝试过从应用程序远程调试API调用。{http://blogs.msdn.com/b/azuremobile/archive/2014/03/14/debugging-net-backend-in-visual-studio.aspx]。您的应用程序将在执行此操作时超时,但如果返回正确的结果集,您可以看到控制器操作的逐行执行。如果它没有问题,那么问题应该在解析结果集。
你在回调中遇到的例外是什么?您是否尝试过使用其他方法参数,例如传递不同的HTTP方法?也可以将其作为参考。 http://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-get-started/
请粘贴您的异常或控制器操作,以及结果集的数据传输对象的对象结构。