我是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客户端使用相同的服务,它工作正常。
非常感谢任何帮助。
感谢。
答案 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)