/**
* 转换返回数据为list集合
* @param object
* @return
*/
public List<WorkOrder> convertSoapObjectList(SoapObject soapObject){
List<WorkOrder> workOrderList=new ArrayList<WorkOrder>();
//如果获取的是个集合,就对它进行下面的操作
if(null!=soapObject&&null!=soapObject.getName()){
//遍历Web Service获得的集合
for(int i = 0; i < soapObject.getPropertyCount(); i++){
WorkOrder workOrder = new WorkOrder();
//获取单条的数据
SoapObject soapChilds = (SoapObject)soapObject.getProperty(i);
//对单个的数据进行再次遍历,把它的每行数据读取出来
for(int k = 0; k < soapChilds.getPropertyCount(); k++){
PropertyInfo propertyInfo = new PropertyInfo();
soapChilds.getPropertyInfo(k, propertyInfo);
//获取实体类的所有属性
Field[] field = workOrder.getClass().getDeclaredFields();
//遍历所有属性
for(int j = 0 ; j < field.length ; j++){
//获取属性的名字
String name = field[j].getName();
//把每个属性的名字跟Web Service返回的k行进行对比
String ppinfoname = propertyInfo.getName().toLowerCase();
if(ppinfoname.equals(name.toLowerCase())){
if(name.equals("id")){
if(null!=soapChilds.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
Integer.parseInt(
soapChilds.getProperty(propertyInfo.getName()).toString())
);
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}else{
if(null!=soapChilds.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
soapChilds.getProperty(propertyInfo.getName()).toString());
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}
}
}
}
workOrderList.add(workOrder);
}
}
return workOrderList;
}
/**
* 转换返回数据为对象
* @param object
* @return
*/
public WorkOrder convertSoapObject(SoapObject soapObject){
WorkOrder workOrder = new WorkOrder();
//如果获取的是个集合,就对它进行下面的操作
if(null!=soapObject&&null!=soapObject.getName()){
//对单个的数据进行再次遍历,把它的每行数据读取出来
for(int k = 0; k < soapObject.getPropertyCount(); k++){
PropertyInfo propertyInfo = new PropertyInfo();
soapObject.getPropertyInfo(k, propertyInfo);
//获取实体类的所有属性
Field[] field = workOrder.getClass().getDeclaredFields();
//遍历所有属性
for(int j = 0 ; j < field.length ; j++){
//获取属性的名字
String name = field[j].getName();
//把每个属性的名字跟Web Service返回的k行进行对比
String ppinfoname = propertyInfo.getName().toLowerCase();
if(ppinfoname.equals(name.toLowerCase())){
if(name.equals("id")){
if(null!=soapObject.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
Integer.parseInt(
soapObject.getProperty(propertyInfo.getName()).toString())
);
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}else{
if(null!=soapObject.getProperty(k)){
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),
soapObject.getProperty(propertyInfo.getName()).toString());
}else{
//给实体类赋值。
WorkOrderServiceImpl.setFieldValue(workOrder, name, field[j].getType(),null);
}
}
}
}
}
}
return workOrder;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void setFieldValue(Object target, String fname, Class ftype,Object fvalue) { //设置字段值 如:username 字段,setUsername(String username)
if (target == null
|| fname == null
|| "".equals(fname)
|| (fvalue != null && !ftype.isAssignableFrom(fvalue.getClass()))) {//如果类型不匹配,直接退出
return;
}
Class clazz = target.getClass();
try { //先通过setXxx()方法设置类属性值
String methodname="set" + Character.toUpperCase(fname.charAt(0)) + fname.substring(1);
Method method = clazz.getDeclaredMethod(methodname, ftype); //获取定义的方法
if (!Modifier.isPublic(method.getModifiers())) { //设置非共有方法权限
method.setAccessible(true);
}
if(!fvalue.equals("anyType{}")){
method.invoke(target, fvalue); //执行方法回调
}else{
fvalue=null;
method.invoke(target, fvalue); //执行方法回调
}
} catch (Exception me) {//如果set方法不存在,则直接设置类属性值
try {
Field field = clazz.getDeclaredField(fname); //获取定义的类属性
if (!Modifier.isPublic(field.getModifiers())) { //设置非共有类属性权限
field.setAccessible(true);
}
if(!fvalue.equals("anyType{}")){
field.set(target, fvalue); //设置类属性值
}else{
field.set(target, null);
}
} catch (Exception fe) {
}
}
}
/***
* 对于返回值不是String类型
* 发送soap请求
* @param methodName --请求的方法名
* @return
*/
public SoapObject sendSoapRequesttoString(String methodName){
SoapObject reponseReslut=null;
SoapObject request=new SoapObject(nameSpace,methodName);
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTranstation = new AndroidHttpTransport(endPoint);
try {
// 调用WebService
httpTranstation.call(nameSpace+methodName, envelope);
// 获取返回的数据
reponseReslut = (SoapObject) envelope.bodyIn;
} catch (Exception e) {
e.printStackTrace();
}
return reponseReslut;
}
/***
* 对于返回值不是String类型
* 发送soapObject请求
* @param methodName --请求的方法名
* @param parameters[][] --请求的参数数组
* @return
*/
public SoapObject sendSoapRequesttoString(String methodName,String parameters[][]){
SoapObject reponseReslut=null;
SoapObject request=new SoapObject(nameSpace,methodName);
if(parameters!=null){
for(int i=0;i<parameters.length;i++){
request.addProperty(parameters[i][0],parameters[i][1]);
}
}
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
AndroidHttpTransport httpTranstation = new AndroidHttpTransport(endPoint);
try {
// 调用WebService
httpTranstation.call(nameSpace+methodName, envelope);
// 获取返回的数据
reponseReslut = (SoapObject) envelope.bodyIn;
} catch (Exception e) {
e.printStackTrace();
}
return reponseReslut;
}