Здравствуйте.
Приступлю сразу к обьяснению проблемы, есть Sharepoint сервер с ntlm авторизацией, есть php скрипт на другом сервере в локалке, с помощью nuSOAP библиотеки добавляю данные в Lists на Sharepoint'е.
Собственно код скрипта:
Код | <?php require_once('lib/nusoap.php');
$username = 'username'; $password = 'password';
$listName = "name";
$wsdl = "http://url/_vti_bin/Lists.asmx?WSDL";
$client = new nusoap_client($wsdl, true);
$client->setCredentials($username,$password, "ntlm"); $client->useHTTPPersistentConnection(); $client->soap_defencoding='UTF-8';
$arrData = array( "Title"=>"Это тест", "Priority"=>"(2) Обычная", "Status"=>"Не начата", "PercentComplete"=>"0", "Body"=>"тесттесттесттест", ); $items = ''; foreach($arrData AS $itm => $val){ $items .= "<Field Name='{$itm}'>{$val}</Field>\n"; }
$CAML ="<UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> <listName>{$listName}</listName> <updates> <Batch ListVersion='1' OnError='Continue'> <Method Cmd='New' ID='1'> {$items} </Method> </Batch> </updates> </UpdateListItems>";
$result = $client->call('UpdateListItems', $CAML,"","http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
if(isset($fault)) { echo("<h2>Error</h2>". $fault); }
$responseContent = htmlspecialchars(substr($client->response,strpos($client->response, "<"),strlen($client->response)-1));
echo "<h2>Request</h2><pre>" . $client->request . "</pre><br>"; echo "<h2>Response header</h2><pre>" . $client->response . "</pre><br>"; echo "<h2>Response content</h2><pre>".$responseContent."</pre><br>";
unset($client);
|
Авторизация и запись проходит успешно, если бы не одно НО =) В Лист пишется не одна строка а три. Три абсолютно одинаковых записи.
Не могу понять где проблема. |