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连接的限制时间内网页服务器将收不到应有的数据,导致客户端没有响应或产生“网络连接错误”“服务器响应异常”等错误。