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

/**
     * 请求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;

终于可以调用带对象参数的方法了。

 

 

转载于:https://www.cnblogs.com/tqspring/archive/2012/12/17/2821863.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值