次の方法で共有


Sys.Net.WebServiceProxy の invoke メソッド

更新 : 2007 年 11 月

指定した Web サービス メソッドを呼び出します。

var webRequest = Sys.Net.WebServiceProxy.invoke(path, methodName, useHttpGet, parameters, succeededCallback, failedCallback, userContext, timeout);

パラメータ

パラメータ

説明

path

Web サービスの URL です。path は、完全修飾 URL (http://www.mySite.com/myService.asmx)、ホスト名または完全修飾ドメイン名 (FQDN) なしの絶対 URL (/myService.asmx)、または相対 URL (../myService.asmx) として設定できます。

WebRequest クラスは、URL がネットワーク エグゼキュータで使用できる形式に変換します。

methodName

呼び出す Web サービス メソッドの名前です。

useHttpGet

(省略可能) Web 要求 HTTP 動詞が POST の場合は false、それ以外の場合は true に設定します。既定値は false です。

Bb383814.alert_note(ja-jp,VS.90).gifメモ :
useHttpGet によって定義されている動詞が、対応する Web サーバー メソッドの ScriptMethodAttribute 設定と一致しなかった場合、Web サービスの呼び出しは失敗します。たとえば、次のコード (C#) では、GET 動詞を使用して呼び出しを行う必要があります。
[ScriptMethod(UseHttpGet=true)]

parameters

(省略可能) 呼び出し対象メソッドのパラメータに対応する名前付きプロパティ (フィールド) が格納された JavaScript ディクショナリです。

{"param1":196610,"param2":"Hello"}
Bb383814.alert_note(ja-jp,VS.90).gifメモ :
ディクショナリに格納されているフィールド名は Web サービス メソッドの名前と一致している必要があります。

Web サーバー メソッドはパラメータを使用しません。parameters は、省略するか、null を指定するか、空のディクショナリ ({}) を指定できます。値を渡してもすべて無視されます。

Web サーバー メソッドのパラメータに対応しないキー/値ペアがディクショナリに含まれていた場合、そのようなペアは無視されます。

succeededCallback

(省略可能) Web サービス メソッドの呼び出しが正常に戻ってきた場合にコールバックとして呼び出す関数です。

コールバック関数は不要で、残りのパラメータに値を指定する必要がある場合は、succeededCallback を null に設定します。

コールバック関数を指定しなかった場合、Web サービス メソッドが正常に完了した際の処理はありません。

failedCallback

(省略可能) Web サービス メソッドの呼び出しが失敗した場合にコールバックとして呼び出す関数です。

コールバック関数は不要で、残りのパラメータに値を指定する必要がある場合は、failedCallback を null に設定します。

コールバック関数を指定しなかった場合、Web サービス メソッドの呼び出し中にエラーが発生した際の処理はありません。

userContext

(省略可能) 任意のユーザー定義情報。userContext には、任意の JavaScript プリミティブ型、配列、またはオブジェクトを指定できます。

userContext の内容は、コールバック関数に渡されます (指定されている場合)。userContext の指定がない場合、null がコールバック関数に渡されます。

timeout

(省略可能) Web 要求がタイムアウトになるまでネットワーク エグゼキュータが待機しなければならない時間 (ミリ秒単位)。timeout には、整数または null を指定できます。タイムアウト間隔を定義することで、コールバックの完了をアプリケーションが待機しなければならない時間を制御できます。

戻り値

このメソッドの呼び出しに使用する WebRequest インスタンス。このインスタンスは、呼び出しの停止に使用できます。

解説

Web サービス パスは実行時に割り当てられるものであり、ページの <asp:ScriptManager> コントロールの <asp:ServiceReference> 要素の path 属性に基づくものではありません。

invoke メソッドを JavaScript コードから呼び出す場合、methodName に指定されている Web サービス メソッドへの非同期 Web 要求が発行されます。要求が戻ってくると、JavaScript コールバック関数 (成功または失敗) が呼び出されます。

このメソッド呼び出しで、コールバック関数またはユーザー コンテキストを渡すことは必須ではありません。代わりとして、既定のコールバック設定またはユーザー コンテキスト設定を、生成されたプロキシ オブジェクトのプロパティとして指定できます。詳細については、「生成されたプロキシ クラス」を参照してください。

使用例

Web サービス メソッドの呼び出しに invoke を使用する方法の例を次に示します。この例には、Web ページ、クライアント スクリプト、およびページからクライアント スクリプトを介して呼び出される Web サービスが示されています。

<%@ 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;

        }


    }


}

参照

概念

クライアント スクリプトからの Web サービスの呼び出し

参照

Sys.Net.XMLHttpExecutor クラス

Sys.Net.WebRequestManager クラス