String methodName = "HelloWorld";
     HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
     ht.debug = true;
      
     ArrayList<User> list=new ArrayList<User>();
     SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
     User user = new User();
     user.setProperty(0, "zhi");
     user.setProperty(1, 18);
     list.add(user);
     PropertyInfo pi = new PropertyInfo();
     pi.setName("User");//webservice接口的参数名,大小写必须跟dotnet中的webservice暴露出来的名字一致
     pi.setValue(list);
     pi.setType(list.getClass());
     soapObject.addProperty(pi);//将自定参数加入请求对象中
    
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
          SoapEnvelope.VER11);  
     envelope.bodyOut = ht;
     // 设置与.Net提供的Web Service保持较好的兼容性
     envelope.dotNet = false;
    
     envelope.setOutputSoapObject(soapObject);//设置请求参数
     envelope.addMapping(SERVICE_NS, "List<User>", list.getClass());//传对象时必须,参数namespace是webservice中指定的, name是服务器类型的名称, claszz是自定义类的类型
       
      
     ht.call(SERVICE_NS + methodName, envelope);请指教下代码有什么问题?

解决方案 »

  1.   

     [SoapRpcMethod, WebMethod]//具体方法中也要指定rpc方式
            public List<User> HelloWorld(List<User> user)
            {
                List<User> uslist = new List<User>();
          
                User us = new User();
                us.Name = "Hello " + user[0].Name;
                us.Age = user[0].Age;
                uslist.Add(us);
                return uslist;
            } 这是.net webservices中的方法