次の方法で共有


SharePoint Foundation RPC メソッドをポストする

最終更新日: 2010年3月23日

適用対象: SharePoint Foundation 2010

URL プロトコルCollaborative Application Markup Language (CAML) および SharePoint Foundation Remote Procedure Call Protocol (RPC) と共に使用すると、Microsoft SharePoint Foundation 2010 を実行しているフロントエンド Web サーバーに要求をポストできます。単一の要求をポストするには CAML の Method 要素を使用します。複数の要求をポストするには、複数の Method 要素を含む Batch 要素を使用します。この操作は .ASPX ページ内のフォームのポスト ボディを介して行います。次のプログラミング作業は、要求をポストするフォームの作成方法を示しています。

要求をポストするフォームを作成するには

  1. .aspx ページを作成し、次のように、サーバー コントロールの Microsoft.SharePoint.WebControls 名前空間を登録するページ ディレクティブを追加します。

    <%@ Register Tagprefix="SharePoint" 
      Namespace="Microsoft.SharePoint.WebControls" 
      Assembly="Microsoft.SharePoint, Version=11.0.0.0, 
      Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    

    注意

    現在の SharePoint Foundation 2010 展開の PublicKeyToken 値は、ローカル ドライブ:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\sts 内の default.aspx ファイルから、または Windows Explorer でローカル ドライブ:\%WINDOWS%\assembly の Microsoft.SharePoint アセンブリ用に提供された情報から取得できます。

  2. フォームの送信時に FormDigest コントロールをそれぞれの Method 要素に自動的に挿入するには、以下のスクリプト ブロックを追加します。

    <script type="text/javascript" language="JavaScript">
    function InsertSecurityValidation(oForm)
    {
        var sFormDigest = '<SetVar Name="__REQUESTDIGEST">' + 
          oForm.elements["__REQUESTDIGEST"].value + "</SetVar>\n";
        var oPostBody = oForm.elements["PostBody"];
        var rePattern = /<\/Method>/g;
        oPostBody.value = oPostBody.value.replace(rePattern, 
            sFormDigest + "</Method>");
    }
    </script>
    
  3. 以下のように, .aspx ページ内にフォームを作成します。action 属性には、サーバーにポストされる URL コマンドが含まれます。

    <form method="post" 
      action="http://Server_Name/sites/Site_Name/_vti_bin/owssvr.dll" 
      onsubmit="InsertSecurityValidation(this);">
      <SharePoint:FormDigest runat="server" />
      <input type="hidden" name="Cmd" value="DisplayPost" />
      <textarea rows="18" name="PostBody" cols="72"></textarea>
      <input type="submit" value="Submit" />
      <input type="reset" value="Reset" />
    </form>
    

    フォームは DisplayPost メソッドを使用して、ポスト ボディ内に含まれるすべての CAML をサーバーがレンダリングするように要求します。

  4. ブラウザーでフォームを開き、次のようなコード ブロックをポスト ボディに挿入します。ここでは、Batch 要素を使用して、2 件のお知らせをお知らせリストに追加するために複数の RPC メソッドをポストします。

    <ows:Batch Version="6.0.2.5608" OnError="Return">
      <Method ID="A1">
        <SetList>List_GUID</SetList>
        <SetVar Name="ID">New</SetVar>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">
            New Program Manager</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Body">
            Congratulations to Jane for her promotion!</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Expires">
            2001-09-14T00:00:00Z</SetVar>
      </Method>
      <Method ID="A2">
        <SetList>List_GUID</SetList>
        <SetVar Name="ID">New</SetVar>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">
            Sales rise by 10%</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Body">The
            accounting department has released its quarterly report. 
            Check it out!</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Expires">
            2001-12-18T00:00:00Z</SetVar>
      </Method>
    </ows:Batch>
    

コードのコンパイル

Batch 要素には、サーバーで稼働中の SharePoint Foundation のバージョンを指定する Version 属性を含める必要があります。各 SetList ノードは、リストの GUID を指定する必要があります。

フォームが送信されると、このサンプルにより、お知らせリストに 2 つのレコードが追加されます。

セキュリティ

サーバー上のセキュリティ検証が有効になっている場合 (SharePoint Foundation では既定で true)、フォーム内で FormDigest サーバー コントロールを追加する必要があります。このコントロールとセキュリティ検証の詳細については、「データ更新のためのセキュリティ検証と投稿の作成」を参照してください。ポストに使用される各 Method 要素には、フォーム ダイジェストが指定されている必要があります。指定されない場合、ポストはセキュリティ検証に合格しません。