Soapclient запрос веб-службы Sharepoint - PullRequest
3 голосов
/ 10 августа 2010

Я успешно запросил услугу со следующим кодом отсюда

<code><?php
$authParams = array("login" => "username", "password" => "password");
$listName = "{2882F083-8890-4ADA-A1FC-39ED1D63D825}";
$rowLimit = '150';
$wsdl = "http://localhost:89/list.wsdl";
$soapClient = new SoapClient($wsdl, $authParams);
$params = array('listName' => $listName, 'rowLimit' => $rowLimit);
$rawXMLresponse = null;
try{
    $rawXMLresponse = $soapClient->GetListItems($params)->GetListItemsResult->any;
}
catch(SoapFault $fault){
    echo 'Fault code: '.$fault->faultcode;
    echo 'Fault string: '.$fault->faultstring;
}
echo '<pre>' . $rawXMLresponse . '
';$ dom = новый DOMDocument ();$ Dom-> loadXML ($ rawXMLresponse);$ results = $ dom-> getElementsByTagNameNS ("# RowsetSchema", "*");foreach ($ results как $ result) {echo $ result-> getAttribute ("ows_LinkTitle"). ""; echo $ result-> getAttribute (" ows_Body ")."";} unset ($ soapClient);?>

Однако атрибут ows_Body не отображается, возможно, потому, что атрибут не выбран в $ rawXMLresponse. Как я могу получить это в ответе? ЕслиGetListItems требует дополнительного параметра запроса. Как мне его отформатировать?

ниже - это то, что возвращается из rawXMLresponse

<code><pre><listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"><rs:data ItemCount="3"><z:row ows_Attachments="0" ows_LinkTitle="Hypothermia and Jellyfish" ows_Modified="2010-08-03 09:43:56" ows_Notice_x0020_Type="Calendar" ows_MetaInfo="1;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Hypothermia and Jellyfish" ows_ID="1" ows_owshiddenversion="2" ows_UniqueId="1;#{B90ECA8C-6FBB-476D-BF67-A05B07268591}" ows_FSObjType="1;#0" ows_Created_x0020_Date="1;#2010-07-29 09:38:52" ows_Created="2010-07-29 09:38:52" ows_FileLeafRef="1;#1_.000" ows_FileRef="1;#Lists/kk3/1_.000"/><z:row ows_Attachments="0" ows_LinkTitle="The Hunting of the Snark" ows_Modified="2010-08-03 09:43:42" ows_Notice_x0020_Type="Public" ows_MetaInfo="2;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="The Hunting of the Snark" ows_ID="2" ows_owshiddenversion="2" ows_UniqueId="2;#{F070D967-97F1-40DF-803B-EF50424D205B}" ows_FSObjType="2;#0" ows_Created_x0020_Date="2;#2010-07-29 09:39:57" ows_Created="2010-07-29 09:39:57" ows_FileLeafRef="2;#2_.000" ows_FileRef="2;#Lists/kk3/2_.000"/><z:row ows_Attachments="0" ows_LinkTitle="Never undersell yourself" ows_Modified="2010-08-03 09:43:29" ows_Notice_x0020_Type="Public" ows_MetaInfo="3;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Never undersell yourself" ows_ID="3" ows_owshiddenversion="3" ows_UniqueId="3;#{4DBEC63E-E25F-4580-B5D8-590C584A6E95}" ows_FSObjType="3;#0" ows_Created_x0020_Date="3;#2010-07-29 09:40:32" ows_Created="2010-07-29 09:40:32" ows_FileLeafRef="3;#3_.000" ows_FileRef="3;#Lists/kk3/3_.000"/></rs:data></listitems>

1 Ответ

1 голос
/ 11 августа 2010

Попробуйте добавить параметр ViewFields в ваш запрос.Это позволяет указать, какие поля следует возвращать в запросе и в каком порядке.

viewFields является дочерним элементом элемента GetListItems:

<viewFields>
   <ViewFields>
     <FieldRef Name="LinkTitle" />
     <FieldRef Name="Body" />
   </ViewFields>
</viewFields>

На основена примере, который вы привели, я предполагаю имена столбцов, за которыми вы будете следовать;вам может понадобиться настроить то, что SharePoint на самом деле вызывает эти столбцы внутри.

Префикс ows_ добавляется к имени столбца, поэтому вы не будете обращаться к ним в этом формате, кроме как при извлечении из XML-результата.

...