2011-05-16 63 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消息來完成此操作,但使用代理的關鍵在於它爲您完成了轉換。