Web Services 我们可以在没有SOAP封装的情况下调用ASP.NET Web服务吗?就像一个简单的RESTAPI

ltqd579y  于 2022-11-15  发布在  .NET
关注(0)|答案(1)|浏览(135)

我们可以在ASP.NETWeb服务中创建一个简单的post方法,它像RESTAPI方法一样运行吗?
因为我不想提供一个信封的邮政和获得的要求。
有人能提供解决方案吗?

gpnt7bae

gpnt7bae1#

您不仅可以做到这一点,而且事实上,如果您在.net中创建一个web方法,就可以开箱即用:

It can accept soap 1.1, 1.2 - no extra code on your part
It can accept a rest call - even json data - no extra code on your part
It can accept a plane jane URL (again rest) call - no extra code on your part

因此,实际上,您得到了以上所有3个--实际上,以上算4个,因为您 AJAX 调用可以使用(data)或URL来传递信息。
比如,我添加一个我创建的Web服务页面,如下所示:

请注意,您不必创建一个Web服务页面,您可以将一个函数(返回值)放入一个现有页面中,或者将一个子函数放入该页面中。只要您使用WebMethod()将函数/子函数绑定到该页面中,就可以开始了。
因此,在上面的页面中,我们添加一个简单的函数。它将接受参数FirstName和LastName,并返回全名。
因此,我们在上面的Web服务页面中有以下代码:

<WebMethod()>
Public Function GetName(FirstName As String, LastName As String) As String

    Dim sResult As String = ""

    sResult = FirstName & " " & LastName

    Return sResult

End Function

以上是非常简单的。
因此,您可以使用jQuery,并通过post调用此方法,如下所示:

<asp:Button ID="cSoap" runat="server" Text="Soap Example" 
            OnClientClick="webcalltest();return false" />

        <script>

            function webcalltest() {

                var First = 'Albert'
                var Last = 'Kallal'

            var url = '../WebService1.asmx/GetName'
                $.ajax({
                    type: "POST",
                    url: url,
                    dataType: "json",
                    data: JSON.stringify({ FirstName: First, LastName: Last }),
                    contentType: "application/json; charset=utf-8",
                success: function (msg) {
                    alert(msg.d)
                },
                error: function (msg) {
                    alert("Failed: " + msg.status + ": " + msg.statusText);
                }
            });

如前所述,该web方法也将接受soap调用。
你甚至可以跳过标题(在上面的帖子中),并抛出一个100%平面jane REST调用-只是URL,这样说:

<asp:Button ID="Button2" runat="server" Text="Soap Example" 
            OnClientClick="webtest2();return false" />

        <script>
            function webtest2() {

                var First = 'Albert'
                var Last = 'Kallal'
                var url = '../WebService1.asmx/GetName?FirstName=' + First + '&LastName=' + Last

                $.get(url, function (data, status) {

                    alert($(data).find('string').text())

                    alert("Data: " + data + "\nStatus: " + status);
                })
            }

        </script>

因此,在上面的代码中,我们只使用了rest调用的URL。(没有设置任何头,甚至没有设置soap xml记录)。因此,请记住,即使是旧的遗留soap方法,在大多数情况下也可以被传递并使用JSON数据-通常情况下,您不必重写甚至更改Web方法。
如上所示,您可以只向URL提供参数,而根本不传递任何头-更不用说SOAP头了。

相关问题