在Android客户端中使用WCF数据服务

时间:2014-11-20 23:48:36

标签: android json wcf-data-services

我是Android开发的初学者。我试图通过WCF数据服务检索数据。该服务配置为以atom和json格式返回数据。

我正在使用odata4j库。我的代码如下......

public class Welcome extends Activity {

Button call;
ListView list;
ArrayList categories;
ArrayAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);

    setTitle("WCF Example");
    call = (Button) findViewById (R.id.mybtn);
    list = (ListView) findViewById(R.id.mylistview);
    categories = new ArrayList();
    call.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            new callService().execute();
        }
    });
}
public class callService extends AsyncTask<Void, Void, ArrayList<String>> {
    @Override
    protected ArrayList<String> doInBackground(Void... params) {

    ODataConsumer c =                    ODataJerseyConsumer.create("http://217.37.219.177:82/EbosDataService.svc");
        List<OEntity> listEntities = c.getEntities("driver_details").execute().toList();
        System.out.println("Size"+ listEntities.size());
        if (listEntities.size() > 0) {
            for (OEntity entity : listEntities) {
                categories.add(entity.getProperty("DriverID").getValue().toString()
                        + " - "
                        + entity.getProperty("DriverFirstName").getValue());
            }
        }
        return categories;
    }
    @Override
    protected void onPostExecute(ArrayList<String> result) {            
        super.onPostExecute(result);
        adapter = new ArrayAdapter<String>(Welcome.this,
                android.R.layout.simple_list_item_1, result);
        list.setAdapter(adapter);
    }
}
}

当我跑步时,应用程序变得没有响应。请参阅日志

http://217.37.219.177:85/errorlog.txt

然而,当我访问http://services.odata.org/Northwind/Northwind.svc我的代码有效时。请参阅日志

http://217.37.219.177:85/successlog.txt

我想我的服务有问题。我无法解决这个问题,因为我在不同的dot net客户端使用相同的服务,它工作正常。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

我建议您调试应用程序以解决NullPointerException。

顺便说一下,你正在使用OData早期版本。如果你在服务器端使用OData V4,那么在客户端,你可以使用Apache Olingo OData for Java Client @ http://olingo.apache.org/doc/odata4/download.html Olingo OData Client for Android下载(md5,sha512,pgp)