我有Wcf(Odata)服务如何在Android中获得响应 [英] I Have Wcf(Odata) Services How Can I Get Response In Android

查看:53
本文介绍了我有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆