SOAP を介してリストをページングするのに問題があります。
リストを取得できますが、最初の 30 項目しか返されません。(これはデフォルト ビューの設定です)。
$methodName = 'GetListItems';
$listName = '{259134c5-fa87-441e-8c31-641b51193710}';
$camlQuery="";
$paging = urlencode('Paged=TRUE&p_ID=30');
$xmlAction =
'<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>' . $listName . '</listName>
<query>' . $camlQuery . '</query>
<queryOptions>
<QueryOptions>
<Paging ListItemCollectionPositionNext="' . $paging . '" />
</QueryOptions>
</queryOptions>
</GetListItems>';
echo '<hr><h1>My Action is:</h1><pre>' . htmlentities($xmlAction) . '</pre>';
$client = new Nusoap_Client($wsdl,true);
$response = $client->call($methodName,$xmlAction);
echo '<hr><h1>Response:</h1><pre>' . htmlentities(print_r($response,true)) . '</pre>';
これは、30 個の項目があることを除いて、次のような応答を返します。
Response:
Array
(
[GetListItemsResult] => Array
(
[listitems] => Array
(
[data] => Array
(
[row] => Array
(
[0] => Array
(
[!ows_Region] => 7
[!ows_District_x0020_ID] => 1902
[!ows_District] => SOME ISD
[!ows_Campus_x0020_ID] => 1902001
[!ows_Campus] => MY H S
[!ows_Grade_x0020_Range] => 09-12
[!ows_FileRef] => 30;#sites/ti/Lists/Schools/30_.000
[!ows_MetaInfo] => 30;#
)
)
[!ItemCount] => 30
[!ListItemCollectionPositionNext] => Paged=TRUE&p_ID=30
)
)
)
)
ドキュメントには、次のページを取得するには、「ListItemCollectionPositionNext」で返された値を指定して、再度クエリを実行する必要があると書かれています。それが上記の処理であり、同じ 30 レコードが返されます。このリストには 26,000 の項目があります。
許可の問題ではありません。私はこのリストの管理者であり、sharepoint Web GUI を介して操作できます。
他に何が欠けていますか?