Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我让我的(ASMX)web服务接受/返回JSON而不是XML时,它不再被认为是SOAP了吗?_C#_Asp.net_Rest_Soap_Asmx - Fatal编程技术网

C# 当我让我的(ASMX)web服务接受/返回JSON而不是XML时,它不再被认为是SOAP了吗?

C# 当我让我的(ASMX)web服务接受/返回JSON而不是XML时,它不再被认为是SOAP了吗?,c#,asp.net,rest,soap,asmx,C#,Asp.net,Rest,Soap,Asmx,我只是想用肥皂和休息来掩饰我的想法。我们目前有一些ASMXWeb服务,主要用于我们自己的JavaScript和服务器代码(不是公共API)之间。当我将我的方法指定为ScriptService并指定Json的ResponseFormat时,它仍然被认为只是一个SOAP服务吗?我仍然感觉不到休息,但这可能是因为我的“资源”的设计方式(不是很好/完全由休息来表示) 编辑:阅读更多内容时,我可能会混淆格式(JSON vs XML)和SOAP协议的大多数描述都与XML相关联这一事实。例如,缔约国: 它依赖

我只是想用肥皂和休息来掩饰我的想法。我们目前有一些ASMXWeb服务,主要用于我们自己的JavaScript和服务器代码(不是公共API)之间。当我将我的方法指定为
ScriptService
并指定Json的
ResponseFormat
时,它仍然被认为只是一个SOAP服务吗?我仍然感觉不到休息,但这可能是因为我的“资源”的设计方式(不是很好/完全由休息来表示)

编辑:阅读更多内容时,我可能会混淆格式(JSON vs XML)和SOAP协议的大多数描述都与XML相关联这一事实。例如,缔约国:

它依赖于可扩展标记 用于其消息格式的语言(XML)


对我来说,从逻辑上讲,如果我使用的是JSON,我就不能使用SOAP。

这并不是您所要求的,但是如果您从JavaScript调用ASMX服务并检索JSON,那么ASMX服务就不是RESTful的。您必须向ASMX服务发出POST请求以从中获取JSON,即使请求是幂等的且仅检索数据。在RESTful API中,在这种情况下将使用GET请求,而不是POST


这并不是说,对于私有API来说,缺乏REST性是一个实际问题。我发现ASMX服务作为AJAX回调的基于JSON的服务层在实践中非常有效。

您可以定义向web服务(ASMX)发出的请求类型。允许使用多种协议: HTTP POST, HTTP GET, SOAP 1.1, SOAP 1.2, 等或者你可以阻止他们中的任何一个

使用javascript调用web服务时,可以使用POST或GET。没关系。诀窍在于告诉服务在这些调用中返回什么类型的内容。您可以告诉服务向您发送JSON,也可以告诉服务向您发送XML


在Visual Studio中创建服务客户端以连接到ASMX服务时,Visual studio将尝试访问服务的WSDL,客户端将负责生成SOAP信封以与服务通信,在这种情况下,您将发送和接收XML,因为客户端和服务器已同意使用XML进行通信。

返回的数据格式与REST无关。REST是关于建模资源的,而不是用什么格式表示它们。SOAP是在JSON出现之前设计的,XML是蜜蜂的膝盖。因此,如果SOAP总是希望返回XML,我也不会感到惊讶,尽管这只是一个猜测(我已经将近十年没有使用SOAP了),所以在javascript中,如果我使用XmlHttp和带有SoapAction头的POST,我实际上使用的是HTTP而不是SOAP协议?不,如果使用SoapAction头并发送SOAP信封,然后您使用的是SOAP。SOAP与您组装请求的方式更相关。请求仍然通过HTTP调用发送,这是有道理的,因为SOAP位于/依赖HTTP之上。所以我认为这回答了我的问题,当我请求JSON时,我只是使用HTTPPOST。谢谢