我有以下简单的网络服务:
[WebMethod()]
public int Add(int a)
{
return a + 1;
}
我创建了一个类来调用它(不创建wsdl然后创建代理)。 类似的东西:
[System.Web.Services.WebServiceBindingAttribute(
Name = "Addrequest",
Namespace = "GenieSoft")]
public class Addrequest :
System.Web.Services.Protocols.SoapHttpClientProtocol
{
public Addrequest()
{
this.Url = "http://localhost:3880/SoapService/Service.asmx";
}
[System.Web.Services.Protocols.SoapDocumentMethodAttribute(
"GenieSoft/Add",
RequestNamespace = "GenieSoft",
ResponseNamespace = "GenieSoft",
Use = System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public object[] Add(int a )
{
object[] results = this.Invoke("Add",new object[] { a });
return results;
}
}
我创建了该类的对象,然后尝试按如下方式调用webservice:
Addrequest request = new Addrequest();
object[] returnedArray = request.Add(1);
//object i = returnedArray[0]; // i is equal to {object[0]} !
lblresult.InnerText = returnedArray[0].ToString();
我已经在本地调试它并且调用webservice并接收发送的int“1”并返回“2”,但是当我尝试检查返回的所有时,我找到的是{object [0]}据我所知是另一个大小为0的数组。
有人可以通过指出问题来帮助我吗?
注意:我得到了O'Reilly使用Soap编程Web应用程序这本书的例子,我只是将它从字符串更改为int,并且我已经测试了它两种方式 - 作为一个字符串并作为一个int-并在两个测试中得到相同的结果。
答案 0 :(得分:1)
我想出了问题,显然调用函数的返回dataType导致问题(object []),而在webservice中它是(int)。为了解决这个问题,我修改了webservice以返回一个object []而不是一个int(也可以修改了在调用类中添加以返回int)这样的东西:
public object[] Add(int a)
{
object[] objects = { a + 1 };
return objects;
}