paramMap = new LinkedHashMap
return LoadResult(methodName, paramMap); }
}
对于这个类,需要啰嗦几句。
主要方法是LoadResult(String methodName, Map
无参的方法(serverTime)在此处代表了基本数据类型参数的调用服务和无参调用服务两种情况,由于基本数据类型在ksoap2中已经做了默认的映射,所以映射工作我们不必再做,只需要直接设置参数就行(只是需要参数名称与参数值要保证一一对应)。
自定义参数的方法(Register)在此处代表含有自定义参数的调用服务操作,这里的参数为TransferParams类型,针对这种自定义类型,我们需要映射,既然要映射,就需要服务器端和客户端的各自的类型,而此时只有服务器端对这个类型进行了定义,客户端并没有对这个类型进行定义,所以接下来的第一件事就是定义TransferParams类型。具体作法如下: 4、 新建TransferParams.java文件,实现KvmSerializable接口,代码如下:
package com.example.webservicetest;
import java.util.Hashtable;
import org.ksoap2.serialization.KvmSerializable; import org.ksoap2.serialization.PropertyInfo;
public class TransferParams implements KvmSerializable{ private boolean Compress; private intDBType;
private booleanDefaultLogic; private String EnterpriseID; private intFileType; private String MD5; private String PDAID; private String StationID; private String Version;
@Override
public Object getProperty(int arg0) {
switch (arg0) { case 0: return Compress; case 1: return DBType; case 2: return DefaultLogic; case 3: return EnterpriseID; case 4: return FileType; case 5: return MD5; case 6: return PDAID; case 7: return StationID; case 8: return Version; default: return null; } }
@Override
public intgetPropertyCount() { return 9;//参数的个数 }
@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) { //这个很重要
arg2.namespace=\ switch (arg0) { case 0:
arg2.type=PropertyInfo.BOOLEAN_CLASS; arg2.name=\ break; case 1:
arg2.type=PropertyInfo.INTEGER_CLASS; arg2.name=\ break; case 2:
arg2.type=PropertyInfo.BOOLEAN_CLASS;
arg2.name=\ break;
case 3:
arg2.type=PropertyInfo.STRING_CLASS; arg2.name=\ break;
case 4:
arg2.type=PropertyInfo.INTEGER_CLASS; arg2.name=\ break;
case 5:
arg2.type=PropertyInfo.STRING_CLASS; arg2.name=\ break;
case 6:
arg2.type=PropertyInfo.STRING_CLASS; arg2.name=\ break;
case 7:
arg2.type=PropertyInfo.STRING_CLASS; arg2.name=\ break;
case 8:
arg2.type=PropertyInfo.STRING_CLASS; arg2.name=\ break;
default: break; } }
@Override
public void setProperty(int arg0, Object arg1) { switch (arg0) { case 0: Compress = Boolean.getBoolean(arg1.toString()); break; case 1: DBType = Integer.valueOf(arg1.toString()); break; case 2: DefaultLogic = Boolean.getBoolean(arg1.toString()); break; case 3:
EnterpriseID = arg1.toString(); break; case 4: FileType = Integer.valueOf(arg1.toString()); break; case 5: MD5 = arg1.toString(); break; case 6: PDAID = arg1.toString(); break; case 7: StationID = arg1.toString(); break; case 8: Version = arg1.toString(); break; default: break; } }
public booleanisCompress() { return Compress; }
public void setCompress(boolean compress) { Compress = compress; }
public intgetDBType() { return DBType; }
public void setDBType(intdBType) { DBType = dBType; }
public booleanisDefaultLogic() { return DefaultLogic; }
public void setDefaultLogic(booleandefaultLogic) { DefaultLogic = defaultLogic;
}
public String getEnterpriseID() { return EnterpriseID; }
public void setEnterpriseID(String enterpriseID) { EnterpriseID = enterpriseID; }
public intgetFileType() { return FileType; }
public void setFileType(intfileType) { FileType = fileType; }
public String getMD5() { return MD5; }
public void setMD5(String mD5) { MD5 = mD5; }
public String getPDAID() { return PDAID; }
public void setPDAID(String pDAID) { PDAID = pDAID; }
public String getStationID() { return StationID; }
public void setStationID(String stationID) { StationID = stationID; }
public String getVersion() { return Version;