Android Web Service--SOAP简介(三)

Android端的打包、解包、封装和解封装

1.打包

        本项目在通讯设计中,为了便于高速读取写入数据,按照数组(String[])、数组列表(ArrayList<String>)或者哈希表数组列表(ArrayList<HashMap<Key,Value>>)的格式进行数据的打包。为了便于Web Service各个接口的方法的访问,进行统一设计,将所有关于打包的程序全部定义在DBUtil的公共类中,便于其他类对其调用。

例1:插入父表任务单

/*
	 * @ Description = "插入任务单父表"
	 * @ WebMethod = insertFatherTaskTable
	 * @ ID = DB01
	 * */
	public void insertFatherTaskTable(String string_0, String string_1, String string_2, 
			String string_3, String string_4, String string_5, String string_6){
		ParNameList.clear();ParValueList.clear();
		ParNameList.add("CON_ID");				ParValueList.add(string_0);//合同号
		ParNameList.add("TASK_ACC_PERSON");		ParValueList.add(string_1);//业务员
		ParNameList.add("TASK_ACC_TIME");		ParValueList.add(string_2);//任务接受时间
		ParNameList.add("SUPPLY_START_TIME");	ParValueList.add(string_3);//供应起始时间
		ParNameList.add("SUPPLY_END_TIME");		ParValueList.add(string_4);//供应结束时间
		ParNameList.add("MEMO");				ParValueList.add(string_5);//备注
		ParNameList.add("Pname");				ParValueList.add(string_6);//对应位置的工程名称
		Soap.GetWebServre("insertFatherTaskTable", ParNameList, ParValueList);
	}

例2:获取所有生产任务名称和业务员名称

/*
	 * @ Description = "获得所有生产任务名称和业务员名称"
	 * @ WebMethod = selectAllPnameConIdInfos
	 * @ ID = DB04
	 * */
	public List<HashMap<String, String>> selectAllPnameConIdInfos(String UserName){
		List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
	BufferList.clear();ParNameList.clear();ParValueList.clear();
		ParNameList.add("UserName");
		ParValueList.add(UserName);
		BufferList = Soap.GetWebServre("selectAllPnameConIdInfos", ParNameList, ParValueList);
		if((BufferList.size()%7==0) && (BufferList.size()!=0))
		{
			for (int j = 0; j < BufferList.size(); j += 6) {
				HashMap<String, String> hashMap = new HashMap<String, String>();
				hashMap.put("CON_ID", BufferList.get(j+1));
				hashMap.put("TASK_ACC_PERSON", BufferList.get(j+2));
				hashMap.put("TASK_ACC_TIME", BufferList.get(j+3));
				hashMap.put("SUPPLY_START_TIME", BufferList.get(j+4));
				hashMap.put("SUPPLY_END_TIME", BufferList.get(j+5));
				hashMap.put("MEMO", BufferList.get(j+6));
				list.add(hashMap);
			}
			
			return list;
		}
		else{
			Log.i("DB04", String.valueOf(BufferList.size()));
			return null;
		}
}

2.解包

        解包过程,即对通讯获得的返回数据进行进一步读取。解包过程分散在需要进行通讯的各个Activity中,将获得的一系列数据分别取值并赋予一定的含义。

3.封装

        封装过程,即按照SOAP通讯的数据格式进行数据报的构造。因为Web Service与Android的通讯依赖于基于SOAP的XML格式的文件传送,所以对于文件的格式要求非常严格,否则在建立URL连接的限制时间内网页服务器将收不到应有的数据,导致客户端没有响应或产生“网络连接错误”“服务器响应异常”等错误。

4.解封装

        解封装就是封装的逆过程。SOAP通讯得到的数据时,得到的是一条XML格式的数据。XML设计用来传送及携带数据信息,而非用来表现或展示数据。因此需要对封装好的数据进行去掉根元素、SOAP Envelope、SOAP Header、SOAP Body,进而获取SOAP Body承载的内核信息,即为我们所需要的信息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值