如何从客户端调用带有序列化对象的 C# Web 服务

how to call C# web service with Serialization object from client

在我的 C# 代码中添加 wsdl 后,我从参考中获取了方法。

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("Service1", RequestNamespace="http://xxx.yyy/", ResponseNamespace="http://xxx.yyy/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        [return: System.Xml.Serialization.XmlElementAttribute("Service1Return")]
        public Servic1Output[] Service1([System.Xml.Serialization.XmlElementAttribute("Servicelist")] Service1Input[] Service1List) {
            object[] results = this.Invoke("Service1", new object[] {
                        Service1List});
            return ((Service1Output[])(results[0]));
            }

我试着用

来称呼它
webreference.Service1Input input = new Service1Input();
webreference.Service1Output output = new Service1Output();

input.ACTION = "First Text";
input.ACTION2 = "Second Text";

List<webreference.Service1Input> input2;
input2.Add(input);

List<webreference.Service1Output> output2;

webreference.test service = new test();
output = service.Service1(input);

但结果是无效参数。在

output = service.Service1(input);

如何调用这样的方法。

您需要将 Service1Input 个对象的数组而不是单个实例传递给 Service1(Service1Input[]) 方法。

webreference.Service1Input input = new Service1Input();
webreference.Service1Output output = new Service1Output();

input.ACTION = "First Text";
input.ACTION2 = "Second Text";

List<webreference.Service1Input> input2;
input2.Add(input);

List<webreference.Service1Output> output2;
Service1Input[] inputArray = input2.ToArray();    

webreference.test service = new test();
output = service.Service1(inputArray);