【问题标题】:I'm using OData4j for Android,I can't get the entities我正在为 Android 使用 OData4j,我无法获取实体
【发布时间】:2013-08-31 22:28:32
【问题描述】:

这是我的代码:

package com.example.toggleDemo;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import org.odata4j.consumer.ODataConsumer;
import org.odata4j.core.OEntity;
import org.odata4j.jersey.consumer.ODataJerseyConsumer;
import java.util.List;
import java.util.ArrayList;

public class MainActivity  extends ListActivity {
    @Override
    public void  onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, GetExpenseReports()));
        getListView().setTextFilterEnabled(true);
    }

    ArrayList<String> GetExpenseReports()
    {
        ArrayList<String> listUI = new ArrayList<String>();
        ODataConsumer c = ODataJerseyConsumer.create("http://services.odata.org/Northwind/Northwind.svc/");
        List<OEntity> listCategories= (List<OEntity>) c.getEntities("Categories");
        for(OEntity category : listCategories) {
            listUI.add(String.format("%s-%s", category.getProperty("CategoryID").getValue().toString(), category.getProperty("CategoryName").getValue().toString()));
        }
        return  listUI;
    }
}

模拟器运行时报错: 08-28 17:30:05.793:错误/AndroidRuntime(781):致命异常:主要 java.lang.NoClassDefFoundError: javax.ws.rs.ext.RuntimeDelegate 在 org.odata4j.jersey.consumer.ODataJerseyConsumer.(ODataJerseyConsumer.java:22) 在 org.odata4j.jersey.consumer.ODataJerseyConsumer.(ODataJerseyConsumer.java:14) 在 org.odata4j.jersey.consumer.ODataJerseyConsumer$Builder.build(ODataJerseyConsumer.java:93) 在 org.odata4j.jersey.consumer.ODataJerseyConsumer.create(ODataJerseyConsumer.java:115) 在 com.example.toggleDemo.MainActivity.GetExpenseReports(MainActivity.java:38) 在 com.example.toggleDemo.MainActivity.onCreate(MainActivity.java:22) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 在 android.app.ActivityThread.access$2300(ActivityThread.java:125) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:123) 在 android.app.ActivityThread.main(ActivityThread.java:4627) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:521) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 在 dalvik.system.NativeStart.main(Native Method)

提前致谢!

【问题讨论】:

  • 我不能使用 ODataConsumer.create(..) 也不能使用代码: List listCategories= c.getEntities("Categories").execute().toList ();编译报告“无法解析方法'toList()'。但是我看到使用'toList()'的OData4j的演示代码,为什么我不能使用?
  • 虽然追踪,我在 EdmDataServices.java 的 findEdmEntitySet() 中发现,我无法获取 this.schemas。this.schemas 为 null。

标签: java odata4j


【解决方案1】:

试试这个 它对我有用 ArrayList listUI = new ArrayList(); ODataConsumer c = ODataJerseyConsumer.create("http://services.odata.org/Northwind/Northwind.svc/"); OQueryRequest 类别 = c.getEntities("Categories");

    Enumerable<OEntity> enumCatagory = catagories.execute();
    OEntity category = enumCatagory.first();
    System.out.println(enumCatagory.count());
    String str = String.format("%s-%s", category.getProperty("CategoryID").getValue().toString(), category.getProperty("CategoryName").getValue().toString());
    System.out.println(str);

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 2021-08-29
    • 2022-06-15
    • 2022-01-10
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多