您的位置:首页 > 移动开发 > Android开发

Android ksoap2调用.net webservice上传对象参数

2012-12-17 16:07 190 查看
/**
* 请求webservice并返回响应
* @param namespace        webservice命名空间
* @param webServiceURL    WSDL文档的URL
* @param soapAction    SOAPAction
* @param methodName    要调用的webservice方法名
* @param propertyInfos    PropertyInfo参数数组
* @param timeout        超时时长 毫秒
* @param mappingName     对象参数类名
* @param mappingClass     对象参数类
* @return
* @throws XmlPullParserException
* @throws IOException
*/
public static Object visitWebService(String namespace,String webServiceURL,String soapAction,String methodName,PropertyInfo[] propertyInfos,int timeout,String mappingName,Class mappingClass) throws IOException, XmlPullParserException{
Object result = null;
//创建SoapObject对象,并指定WebService的命名空间和调用的方法名
SoapObject soapObject = new SoapObject(namespace, methodName);
//设置WebService方法的参数
if(propertyInfos!=null)
for(int i=0;i<propertyInfos.length;i++){
soapObject.addProperty(propertyInfos[i]);
}
//创建SoapSerializationEnvelope对象,并指定WebService版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//设置bodyOut属性
envelope.bodyOut = soapObject;
//需要设置dotNet属性,否则报错
envelope.dotNet = true;
if(mappingName!=null){
envelope.addMapping(namespace, mappingName, mappingClass);
}
envelope.setOutputSoapObject(soapObject);
//创建HttpTransportSE对象并指定WSDL文档的URL
HttpTransportSE ht = new HttpTransportSE(webServiceURL, timeout);
ht.debug = true;
//需要设置SOAPAction的值,否则报错
ht.call(soapAction, envelope);
//使用getResponse方法获得WebService方法的返回结果
result = envelope.getResponse();
return result;
}


PropertyInfo[] propertyInfos = new PropertyInfo[1];
PropertyInfo propertyInfo = new PropertyInfo();
propertyInfo.setName("model");
propertyInfo.setValue(new Model("BB", 99));
propertyInfo.setType(Model.class);
propertyInfos[0] = propertyInfo;


终于可以调用带对象参数的方法了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: