2011-04-04 86 views
0

我對一件事感到困惑。正如我讀過的Web服務使用SOAP協議進行通信一樣,它是基於XML的協議;我期待在asp.net web服務上使用經典的HelloWorld方法來返回基於xml的數據。如果SOAP是WebServices使用的基於XML的協議,爲什麼.asmx服務返回JSON?

但是,當我使用Fiddler檢查我看到響應的TextView有一個JSON字符串,而不是像一個XML結構:

{ 「d」:的 「Hello World」}

這是否意味着ASP .net Web服務實現返回嵌入爲「d」屬性值的「字符串」類型?

回答

2

Web服務不必使用SOAP作爲協議。 WCF允許您爲Web服務使用各種協議。 SOAP和JSON只是其中的兩個選項。

1

如果您通過POST請求它們,ASMX服務會返回JSON,並且內容類型包含application/json。更多的信息在這裏:http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/

他們的返回值不僅限於任何字符串。如果你返回一個集合類型,你會得到一個JSON數組。如果您返回一個服務器端類,它將被序列化爲正確的JSON鍵/值對來表示該對象。

.d是一種正交問題。這是一個安全功能,可以阻止對JavaScript的Array構造函數的特定攻擊。更多這裏:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

0

好的。我在這裏找到了我的答案:

「ASP.NET AJAX向Web服務發送JSON消息,而不是通常與Web服務相關的標準簡單對象訪問協議(SOAP)調用,這會導致較小的請求和響應消息總的來說它也允許數據的更高效的客戶端處理,因爲ASP.NET AJAX JavaScript庫進行了優化與JSON對象打交道「

的更多細節: http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services

相關問題