2011-05-16 62 views
2
webservice.PService pService = new Project.webservice.PService(); 
var v3 = passportService.HelloWorld(); 
Response.Write(v3); 

我调试它,发现v3是字符串。为什么?不应该webservcie总是返回XML? WebService的是:为什么值web服务返回不是xml

[WebMethod] 
public string HelloWorld() 
{ 
    return "Hello World"; 
} 

编辑: 如果我想要一个或多个对象的列表什么由webservcie退换吗?

+0

Web服务返回XML,您的调用正在为您抽取相关部分,因此您不必处理它... – forsvarir 2011-05-16 09:56:10

+0

另外,XML **是**字符串,只是具有特殊格式。 – 2011-05-16 09:58:19

+0

HelloWorld是一个演示。如果我想要webservcie返回一个对象或一个对象列表,该怎么办? – hbrls 2011-05-16 10:03:13

回答

1

我建议你可能想从Microsoft开始。然后看看returning objects

虽然webservice传输层使用XML,但有很多东西在那里,您的应用程序代码通常不会关心,这就是为什么客户端代理将它全部剥离给您,重新留下你感兴趣的位。

只要你想从你的WebMethod返回的对象是可序列化的,你应该能够将它定义为返回类型,并且它将被编码为你。当您生成客户端代理时,将为要反序列化的请求创建一个类似的对象。

WebMethod返回对象集合基本上是相同的,虽然值得注意的是List<T> is converted to an Array, over the wire

+0

所以我只需要在Webservice中定义一个类并返回它? .net框架将为我完成剩下的工作? – hbrls 2011-05-16 10:26:50

+0

@hbrlovehaku:在大多数情况下,只要正确的位是公开/可序列化的,那应该就足够了。 – forsvarir 2011-05-16 10:30:51

1

Web服务接受一个对象,并将其序列化为XML,然后将该XML发送回客户端。客户端/代理解析该XML,并将其反序列化回一个对象。返回的类型由您的Web方法签名确定。如果您想查看原始XML,您可以通过检查HTTP消息来完成此操作,但使用代理的关键在于它为您完成了转换。