我有Wcf(Odata)服务如何在Android中获得响应 [英] I Have Wcf(Odata) Services How Can I Get Response In Android
本文介绍了我有Wcf(Odata)服务如何在Android中获得响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我有Wcf(Odata)服务将数据库值输入客户端android mobile。如何从本地数据库中获取服务和存储的响应。
如果你举一个例子它对我来说非常有用
Hi all,
I have Wcf(Odata) Services to get database values into client android mobile. how can i get response from the service and store in local database.
if you give any example it is very useful for me
推荐答案
首先创建Sqlite数据库,如下所示:
First create Sqlite database something like following :
public class EmployeeSqliteDbInfo
{
public static String KEY_ID = "id";
public static String KEY_NAME = "name";
public static String KEY_EMAIL = "email";
public static String KEY_JOB = "job";
public static String KEY_CITY = "city";
public static String KEY_COMPANY = "company";
public static String KEY_PHONE = "phone";
public static String KEY_NOTES = "notes";
private static final String DB_NAME = "EmployeeList";
private static final String DB_TABLE = "Employee";
private static final int DB_VERSION = 1;
private final Context ctx;
private EmpInfo empInfo;
private SQLiteDatabase sqliteDb;
public EmployeeSqliteDbInfo(Context ctx) // CTOR
{
this.ctx = ctx;
}
public EmployeeSqliteDbInfo OpenConnection() // OPEN CONNECTION
{
empInfo = new EmpInfo(ctx);
sqliteDb = empInfo.getWritableDatabase();
return this;
}
public void CloseConnection() // CLOSE CONNECTION
{
sqliteDb.close();
}
public long AddData(int empId, String Name, String Email, String Job, String City, String Company, String Phone, String Notes)
{
ContentValues values = new ContentValues();
values.put(KEY_ID, empId);
values.put(KEY_NAME, Name);
values.put(KEY_EMAIL, Email);
values.put(KEY_JOB, Job);
values.put(KEY_CITY, City);
values.put(KEY_COMPANY, Company);
values.put(KEY_PHONE, Phone);
values.put(KEY_NOTES, Notes);
return sqliteDb.insert(DB_TABLE, null, values);
}
public void UpdateData(int empId, String Name, String Email, String Job, String City, String Company, String Phone, String Notes)
{
ContentValues values = new ContentValues();
values.put(KEY_ID, empId);
values.put(KEY_NAME, Name);
values.put(KEY_EMAIL, Email);
values.put(KEY_JOB, Job);
values.put(KEY_CITY, City);
values.put(KEY_COMPANY, Company);
values.put(KEY_PHONE, Phone);
values.put(KEY_NOTES, Notes);
sqliteDb.update(DB_TABLE, values, KEY_ID + "=" + empId, null);
}
public void DeleteData(int empId)
{
sqliteDb.delete(DB_TABLE, KEY_ID + "=" + empId, null);
}
public ArrayList<HashMap<String, String>> GetData(int empId)
{
String[] Columns = new String[] { KEY_ID, KEY_NAME, KEY_EMAIL, KEY_JOB, KEY_CITY, KEY_COMPANY, KEY_PHONE, KEY_NOTES };
ArrayList<HashMap<String, String>> empInfo = new ArrayList<HashMap<String,String>>();
if(empId != 0)
{
empInfo.clear();
Cursor crs = sqliteDb.query(DB_TABLE, Columns, KEY_ID + "=" + empId, null, null, null, null);
for(crs.moveToFirst(); !crs.isAfterLast(); crs.moveToNext())
{
HashMap<String, String> item = new HashMap<String, String>();
item.put("ID", crs.getString(crs.getColumnIndex(KEY_ID)));
item.put("NAME", crs.getString(crs.getColumnIndex(KEY_NAME)));
item.put("EMAIL", crs.getString(crs.getColumnIndex(KEY_EMAIL)));
item.put("JOB", crs.getString(crs.getColumnIndex(KEY_JOB)));
item.put("CITY", crs.getString(crs.getColumnIndex(KEY_CITY)));
item.put("COMPANY", crs.getString(crs.getColumnIndex(KEY_COMPANY)));
item.put("PHONE", crs.getString(crs.getColumnIndex(KEY_PHONE)));
item.put("NOTES", crs.getString(crs.getColumnIndex(KEY_NOTES)));
empInfo.add(item);
}
}
else
{
empInfo.clear();
Cursor crs = sqliteDb.query(DB_TABLE, Columns, null, null, null, null, null);
for(crs.moveToFirst(); !crs.isAfterLast(); crs.moveToNext())
{
HashMap<String, String> item = new HashMap<String, String>();
item.put("ID", crs.getString(crs.getColumnIndex(KEY_ID)));
item.put("NAME", crs.getString(crs.getColumnIndex(KEY_NAME)));
item.put("EMAIL", crs.getString(crs.getColumnIndex(KEY_EMAIL)));
item.put("JOB", crs.getString(crs.getColumnIndex(KEY_JOB)));
item.put("CITY", crs.getString(crs.getColumnIndex(KEY_CITY)));
item.put("COMPANY", crs.getString(crs.getColumnIndex(KEY_COMPANY)));
item.put("PHONE", crs.getString(crs.getColumnIndex(KEY_PHONE)));
item.put("NOTES", crs.getString(crs.getColumnIndex(KEY_NOTES)));
empInfo.add(item);
}
}
return empInfo;
}
// SQLITE DATABASE
private static class EmpInfo extends SQLiteOpenHelper
{
public EmpInfo(Context ctx)
{
super(ctx, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
String query = "CREATE TABLE " + DB_TABLE + " (" +
KEY_ID + " INTEGER PRIMARY KEY," +
KEY_NAME + " TEXT," + KEY_EMAIL + " TEXT," +
KEY_JOB + " TEXT," + KEY_CITY + " TEXT," +
KEY_COMPANY + " TEXT," + KEY_PHONE + " TEXT," +
KEY_NOTES + " TEXT);";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
onCreate(db);
}
}
}
现在创建一个帮助程序类,它将从WCF服务获取数据并将其存储到创建的sqlite数据库中。
Now create one helper class that will get the data from WCF Service and store it into the created sqlite database.
public class EmployeeHelper extends AsyncTask<String, String, ArrayList<HashMap<String, String>>>
{
Reader reader;
JSONArray jar;
JSONObject obj;
HttpEntity entity;
HttpResponse response;
ArrayList<HashMap<String, String>> EmpInfoList;
Context ctx;
int empId;
EmployeeSqliteDbInfo empSqlDb;
public EmployeeHelper(Context ctx, int empId)
{
this.ctx = ctx;
this.empId = empId;
this.EmpInfoList = new ArrayList<HashMap<String,String>>();
this.empSqlDb = new EmployeeSqliteDbInfo(ctx);
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
EmpInfoList.clear();
}
@Override
protected ArrayList<HashMap<String, String>> doInBackground(String... params)
{
try
{
//Open Sqlite Connection
empSqlDb.OpenConnection();
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://192.168.43.100:7889/EmployeeService.svc/GetEmpInfo?empId=" + empId);
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
response = client.execute(request);
entity = response.getEntity();
if(entity.getContentLength() != 0)
{
reader = new InputStreamReader(entity.getContent(),"UTF-8");
char[] buffer = new char[(int) entity.getContentLength()];
reader.read(buffer);
reader.close();
jar = new JSONArray(new String(buffer));
for(int i=0; i<jar.length(); i++)
{
HashMap<String, String> item = new HashMap<String, String>();
obj = jar.getJSONObject(i);
String City = obj.getString("CITY");
String Company = obj.getString("COMPANY");
String Email = obj.getString("EMAIL");
int Id = obj.getInt("ID");
String Job = obj.getString("JOB");
String Name = obj.getString("NAME");
String Notes = obj.getString("NOTES");
String Phone = obj.getString("PHONE");
item.put("CITY", City);
item.put("COMPANY", Company);
item.put("EMAIL", Email);
item.put("ID", Id+"");
item.put("JOB", Job);
item.put("NAME", Name);
item.put("NOTES", Notes);
item.put("PHONE", Phone);
item.put("STATUS", obj.getString("STATUS"));
EmpInfoList.add(item);
// Add data to Sqlite
empSqlDb.AddData(Id, Name, Email, Job, City, Company, Phone, Notes);
}
}
else
{
// no record found...
}
}
catch(Exception ex)
{
ex.printStackTrace();
Log.i("EMPLOYEE ASYNC ERROR : ", ex.toString());
}
return EmpInfoList;
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result)
{
super.onPostExecute(result);
Toast.makeText(ctx, "Executed !", Toast.LENGTH_SHORT).show();
empSqlDb.CloseConnection();
}
}
在您的活动中使用帮助程序类方法。 :)
-KR
Use the helper class methods in your activities. :)
-KR
这篇关于我有Wcf(Odata)服务如何在Android中获得响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文