|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-04-08 10:55 UTC] philipp at kolmann dot at
Description: ------------ I am using PHP and SOAP to talk to a Exchange 2007 server. Adding items works without a Problem. Now I wanted to update an Item: The Request looks quite promising, but seems to fail some XML validation. Regarding to the MS Docs (http://msdn.microsoft.com/en-us/library/aa581022.aspx) The Path element is an abstract element that is substituted by FieldURI. This seems not to happen. If needed I can add the wsdl-files. Thanks Philipp Reproduce code: --------------- $UpdateItem->MessageDisposition ="SaveOnly"; $UpdateItem->ConflictResolution="AutoResolve"; $UpdateItem->ItemChanges->ItemChange->ItemId->Id = $item->ItemId->Id; $UpdateItem->ItemChanges->ItemChange->ItemId->ChangeKey = $item->ItemId->ChangeKey; $UpdateItem->ItemChanges->ItemChange->Updates->SetItemField->FieldURI->FieldURI = "item:Sensitivity"; $UpdateItem->ItemChanges->ItemChange->Updates->SetItemField->Message->Sensitivity = "Normal"; $res = $client->UpdateItem($UpdateItem); Expected result: ---------------- Request beeing properly sent to Exchange Server. Actual result: -------------- stdClass Object ( [MessageDisposition] => SaveOnly [ConflictResolution] => AutoResolve [ItemChanges] => stdClass Object ( [ItemChange] => stdClass Object ( [ItemId] => stdClass Object ( [Id] => AAAeAHBrb2xtYW5uQGthbGVuZGVyLnR1d2llbi5hYy5hdABGAAAAAACkwH79RYBrRLOe5dwPwABJBwCWSqnpWEwlT7Z+LCzPQIE9AAAAAYXBAABeyHGqwz04TojssSJ14nFUADMmYzOVAAA= [ChangeKey] => DwAAABYAAABeyHGqwz04TojssSJ14nFUADMmZDks ) [Updates] => stdClass Object ( [SetItemField] => stdClass Object ( [FieldURI] => stdClass Object ( [FieldURI] => item:Sensitivity ) [Message] => stdClass Object ( [Sensitivity] => Normal ) ) ) ) ) ) Fatal error: SOAP-ERROR: Encoding: object hasn't 'Path' property in addtermin.php on line 87 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Nov 03 23:00:01 2025 UTC |
This sample will give you the error described in the Bugreport. You will need the Services.wsdl, messages.xsd and types.xsd from an Exchange 2007 Server. With our Exchange I was able to trigger the error with this script. <?php // Create SOAP Client $client = new SoapClient('Services.wsdl', array('exceptions' => 0, 'trace' => 1, 'login' => "DOMAIN\\user", 'password' => "PASSWORD" )); // Update found item $UpdateItem->MessageDisposition ="SaveOnly"; $UpdateItem->ConflictResolution="AutoResolve"; $UpdateItem->ItemChanges->ItemChange->ItemId->Id = "ItemID from FindItem"; $UpdateItem->ItemChanges->ItemChange->ItemId->ChangeKey = "ChangeKey from FindItem"; $UpdateItem->ItemChanges->ItemChange->Updates->SetItemField = "item:Sensitivity"; print "<pre>"; print_r($UpdateItem); $res = $client->UpdateItem($UpdateItem); echo "REQUEST:\n" . $client->__getLastRequest() . "\n"; print_r($res); print "</pre>"; ?>Hi, it seems that noone ever cared about this Bug :( I am still having the same issues with Exchange 2010 and PHP Version 5.3.10-1. Here is the sample code still not working: <?php // Create SOAP Client $client = new SoapClient('Services.wsdl', array('exceptions' => 0, 'trace' => 1, 'login' => "DOMAIN\\user", 'password' => "PASSWORD" )); // Update found item $UpdateItem->MessageDisposition ="SaveOnly"; $UpdateItem->ConflictResolution="AutoResolve"; $UpdateItem->ItemChanges->ItemChange->ItemId->Id = "ItemID from FindItem"; $UpdateItem->ItemChanges->ItemChange->ItemId->ChangeKey = "ChangeKey from FindItem"; $UpdateItem->ItemChanges->ItemChange->Updates->SetItemField = "item:Sensitivity"; $UpdateItem->ItemChanges->ItemChange->Updates->SetItemField->Message->Sensitivity = "Normal"; print "<pre>"; print_r($UpdateItem); $res = $client->UpdateItem($UpdateItem); echo "REQUEST:\n" . $client->__getLastRequest() . "\n"; print_r($res); print "</pre>"; ?> Is there any hope, that someone might fix this? Thanks Philipp