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 ページ内のフォームのポスト ボディを介して行います。次のプログラミング作業は、要求をポストするフォームの作成方法を示しています。
要求をポストするフォームを作成するには
.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 アセンブリ用に提供された情報から取得できます。
フォームの送信時に 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>
以下のように, .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 をサーバーがレンダリングするように要求します。
ブラウザーでフォームを開き、次のようなコード ブロックをポスト ボディに挿入します。ここでは、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 要素には、フォーム ダイジェストが指定されている必要があります。指定されない場合、ポストはセキュリティ検証に合格しません。