androidodataodata4j

How to Consume OData from Android?


I have WebAPI : http://some.com:39760/odata/DriverInfoes

it shows following when i hit the link

{
  "odata.metadata":"http://some.com:39760/odata/$metadata#DriverInfoes","value":[
    {
      "DriverID":"1","Name":"Faria","Phone":"ss","Email":"ss","Time":null
    }
  ]
}

in android i added odata4j-0.7.0-clientbundle for consuming Odata

private class DownloadWebPageTask extends AsyncTask<Void, Void, OEntity> {
    protected OEntity doInBackground(Void... params) {

        String serviceUrl = "http://some.com:39760/odata/DriverInfoes ";
        ODataConsumer consumer = ODataConsumers.create(serviceUrl);

        return (OEntity) consumer.getEntities("DriverInfoes").execute(); //getting exception here
    }

    @Override
    protected void onPostExecute(OEntity consumer) {
        Log.v("mango", consumer.getType().getFullyQualifiedTypeName());
    }

}

i am getting exception on

return (OEntity) consumer.getEntities("DriverInfoes").execute();

and in my oncreate method i wrote

DownloadWebPageTask task = new DownloadWebPageTask();
task.execute();

but i am not having any luck. i think i am doing something wrong ! can anybody point it to me?


Solution

  • its JSON data... Try To Parse With JSONObject And JSONArray...

    Your Data.

    {
        "odata.metadata": "http://some.com:39760/odata/$metadata#DriverInfoes",
        "value": [
            {
                "DriverID": "1",
                "Name": "Faria",
                "Phone": "ss",
                "Email": "ss",
                "Time": null
            }
        ]
    }
    

    Parse Your Data with following code...

    JSONObject JObj=new JSONObject (jsonresult);
    String metadata= JObj.getString("odata.metadata");
    
    JSONArray array_list = JObj.getJSONArray("value");
    
    //getting order Id from **order_list array**
    for(int i=0;i<array_list.length();i++)
    {
             String DriverID= array_list.getJSONObject(i).getString("DriverID");
             String Name= array_list.getJSONObject(i).getString("Name");
             String Phone= array_list.getJSONObject(i).getString("Phone");
             String Email= array_list.getJSONObject(i).getString("Email");
             String Time= array_list.getJSONObject(i).getString("Time");
    }