Поделиться через


Метод Sys.Net.WebServiceProxy invoke

Вызывает заданный метод веб-службы.

var webRequest = Sys.Net.WebServiceProxy.invoke(ServicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout, enableJsonp, jsonpCallbackParameter);

Параметры

Параметр

Описание

ServicePath

Строка, содержащая путь для URL-адреса веб-службы. Параметр ServicePath может быть полным URL-адресом (http://www.mySite.com/myService.asmx), абсолютным URL-адресов, не содержащим имя узла или полное доменное имя (FQDN) (/myService.asmx) или относительным URL-адресом (../myService.asmx).

Класс WebRequest проверяет, преобразован ли URL-адрес в форму, используемую сетевыми выполнителями веб-запросов.

methodName

Строка, содержащая имя вызываемого метода веб-службы.

useGet

(Необязательно.) false для установки POST в качестве HTTP-команды для выполнения веб-запроса; в противном случае – true. Значение по умолчанию — false.

ПримечаниеПримечание
Вызов веб-службы завершается с ошибкой, если команда, определенная с помощью useGet, не соответствует параметру ScriptMethodAttribute соответствующего метода веб-сервера.Например, в приведенном ниже коде атрибута (на языке C#) требуется, чтобы вызов осуществлялся с помощью команды GET:
[ScriptMethod(UseHttpGet=true)]

params

(Необязательно). Словарь JavaScript, содержащий именованные свойства (поля), соответствующие параметрам вызываемого метода (пример см. ниже).

{"param1":196610,"param2":"Hello"}
ПримечаниеПримечание
Имена полей словаря должны соответствовать именам методов веб-службы.

Если методы веб-сервера не принимают никаких параметров, то параметр params может быть выведен или принимать значение null или значение "пустой словарь" ({}). Все передаваемые впоследствии значения учитываться не будут.

Если словарь содержит пары "ключ-значение", не соответствующие параметру метода веб-сервера, то они не будут учитываться.

onSuccess

(Необязательно). Функция, которая вызывается в качестве функции обратного вызова, если вызов метода веб-службы завершился успешно.

Значение функции onSuccess может быть установлено в null , если в ее использовании нет необходимости и если необходимо указать значение остальных параметров.

Если функция обратного вызова не используется, то при успешном завершении метода веб-службы не выполняются никакие действия.

onFailure

(Необязательно). Функция, которая вызывается в качестве функции обратного вызова, если вызов метода веб-службы завершается с ошибкой.

Значение функции onFailure может быть установлено в null , если в ее использовании нет необходимости и если необходимо указать значение остальных параметров.

Если функция обратного вызова не используется, то при завершении метода веб-службы с ошибкой не выполняются никакие действия.

userContext

(Необязательно.) Любые сведения, специфичные для пользователя. userContext может быть любым типом примитива, массивом или объектом JavaScript.

Содержимое userContext передается функциям обратного вызова (если используются). Если содержимое userContext отсутствует, то функции обратного вызова передается значение null .

timeout

(Необязательно.) Время в миллисекундах, в течение которого сетевой исполнитель запросов должен ожидать завершения веб-запроса. Параметр timeout может быть целым числом или иметь значение null. Задавая интервал времени ожидания, можно управлять временем, в течение которого приложение должно ожидать завершения выполнения функции обратного вызова.

enableJsonp

(Необязательно.) true, чтобы указать, что служба поддерживает JSONP для междоменных вызовов; в противном случае – false.

jsonpCallbackParameter

(Необязательно.) Имя параметра обратного вызова для запроса JSONP. Значение по умолчанию – "callback".

Возвращаемое значение

Экземпляр WebRequest, используемый для вызова метода. Этот экземпляр можно использовать для остановки вызова.

Заметки

Путь к веб-службе назначается во время выполнения, а не с атрибута path элемента ServiceReference элемента управления ScriptManager на странице.

При вызове метода invoke в коде JavaScript выдается асинхронный веб-запрос метода веб-службы, указанного в methodName. При возврате запроса вызывается (успешно или с ошибкой) соответствующая функция обратного вызова JavaScript.

В этом случае в вызове не нужно передавать функции обратного вызова или пользовательский контекст в качестве параметров вызова метода. Вместо этого можно указать используемые по умолчанию параметры функции обратного вызова или пользовательского контекста в качестве свойств созданного прокси-объекта. Дополнительные сведения см. в разделе Созданные прокси-классы.

Пример

В следующем примере показано, как использовать invoke для вызова метода веб-службы. В примере представлены веб-страница, клиентский скрипт и веб-служба, вызванные страницей с помощью клиентского скрипта.

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
 <head id="Head1" runat="server">

        <style type="text/css">
            body {  font: 11pt Trebuchet MS;
                    font-color: #000000;
                    padding-top: 72px;
                    text-align: center }

            .text { font: 8pt Trebuchet MS }
        </style>

        <title>Web Service Proxy</title>


</head>
<body>
    <h2>WebServiceProxy Example</h2>

        <form id="form1" runat="server">
            <asp:ScriptManager runat="server" ID="scriptManager">
                <Scripts>
                    <asp:ScriptReference Path="WebServiceProxy.js" />
                </Scripts>
            </asp:ScriptManager>  

            <table style="font-size:12px">
                <tr>
                    <td>Select Web Service and Method:</td>
                    <td>
                        <select id="SelectionId"    
                            onchange="OnSelectMethod(); return false;">
                            <option value="WebService.asmx" selected>GetServerTime</option>
                            <option value="WebService.asmx">GetGreetings</option>
                            <option value="WebService.asmx">PostGreetings</option>
                        </select>
                    </td>
                </tr>
            </table> 


           <hr />

            <!-- Display results. -->
            <p>
                <span  style="background-color:Aqua" id="ResultId"></span>
            </p>


        </form>
</body>
</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
 <head id="Head1" runat="server">

        <style type="text/css">
            body {  font: 11pt Trebuchet MS;
                    font-color: #000000;
                    padding-top: 72px;
                    text-align: center }

            .text { font: 8pt Trebuchet MS }
        </style>

        <title>Web Service Proxy</title>


</head>
<body>
    <h2>WebServiceProxy Example</h2>

        <form id="form1" runat="server">
            <asp:ScriptManager runat="server" ID="scriptManager">
                <Scripts>
                    <asp:ScriptReference Path="WebServiceProxy.js" />
                </Scripts>
            </asp:ScriptManager>  

            <table style="font-size:12px">
                <tr>
                    <td>Select Web Service and Method:</td>
                    <td>
                        <select id="SelectionId"     
                            onchange="OnSelectMethod(); return false;">
                            <option value="WebService.asmx" selected>GetServerTime</option>
                            <option value="WebService.asmx">GetGreetings</option>
                            <option value="WebService.asmx">PostGreetings</option>
                        </select>
                    </td>
                </tr>
            </table> 


           <hr />

            <!-- Display results. -->
            <p>
                <span  style="background-color:Aqua" id="ResultId"></span>
            </p>


        </form>
</body>
</html>
var webMethod;
var webServicePath;

// This function shows how to use the 
// WebServiceProxy.invoke method without passing
// parameters.
function GetTime()
{
    Sys.Net.WebServiceProxy.invoke(webServicePath, 
        webMethod, false,{}, OnSucceeded, 
        OnFailed,"User Context",1000000);

}

// This function shows how to use the 
// invoke method passing
// parameters and using the GET verb.
// The dictionary field names must match the 
// related Web service method parameter names.
function GetGreetings() 
{
    Sys.Net.WebServiceProxy.invoke(webServicePath, 
        webMethod, true,
        {"greeting":"Have a nice day", "name":" to You (via GET)!"},
        OnSucceeded,OnFailed, "User Context",100);

}

// This function shows how to use the 
// invoke method passing parameters and using the POST verb.
// The dictionary field names must match the 
// related Web service method parameter names.
function PostGreetings() 
{
    Sys.Net.WebServiceProxy.invoke(webServicePath, 
        webMethod, false,
        {"greeting":"Have a nice day", "name":" to You (via POST)!"},
        OnSucceeded,OnFailed, "User Context",100);

}

// This is the callback function invoked 
// if the Web service succeeded.
function OnSucceeded(result, eventArgs)
{

    // Display the result.
    var RsltElem = 
        document.getElementById("ResultId");
    RsltElem.innerHTML = result;

}


// This is the callback function invoked 
// if the Web service failed.
function OnFailed(error)
{
    // Display the error.    
    var RsltElem = 
        document.getElementById("ResultId");
    RsltElem.innerHTML = 
    "Service Error: " + error.get_message();
}



// This function process the user's selection.
function OnSelectMethod()  
{
    // Get the user's selected method.
    var selectionIndex = 
        document.getElementById("SelectionId").selectedIndex;
    webMethod = 
        document.getElementById("SelectionId").options[selectionIndex].text;

    // Get the related Web service path.
    webServicePath = 
        document.getElementById("SelectionId").value;


   // Call selected Web service method.
   switch (webMethod)
   {
    case "GetServerTime":
        GetTime();

        break;

    case "GetGreetings":
        GetGreetings();
        break;

    case "PostGreetings":
        PostGreetings();
        break;

    default:
        alert("default");
   }
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
<%@ WebService Language="C#" Class="Samples.AspNet.WebService" %>

using System;
using System.Web;
using System.Web.Services;
using System.Xml;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

namespace Samples.AspNet
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService]
    public class WebService : System.Web.Services.WebService
    {

        [WebMethod]
        [ScriptMethod(UseHttpGet = true)]
        public string GetGreetings(string greeting, 
               string name)
        {
            return greeting + " " + name;
        }


        [WebMethod]
        [ScriptMethod(UseHttpGet = false)]
        public string PostGreetings(string greeting,
               string name)
        {
            return greeting + " " + name;
        }

        [WebMethod]
        public string GetServerTime()
        {

            string serverTime =
                String.Format("The current time is {0}.", DateTime.Now);

            return serverTime;

        }


    }


}

См. также

Ссылки

Класс Sys.Net.XMLHttpExecutor

Класс Sys.Net.WebRequestManager

Основные понятия

Calling Web Services from Client Script