У меня есть некоторый код, похожий на приведенный ниже Джейсон Латтимер, который раньше работал, но теперь не работает. Я могу найти «Идентификатор» в WSDL больше. Кто-нибудь может оказать помощь в этом?
function GetADFS($url) {
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url . "XrmServices/2011/Organization.svc?wsdl=wsdl0" );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
$response = curl_exec ( $ch );
curl_close ( $ch );
$responsedom = new DomDocument ();
$responsedom->loadXML ( $response );
// **************************************************
// **************************************************
// Can no longer find this Identifier
// **************************************************
// **************************************************
$identifiers = $responsedom->getElementsbyTagName ( "Identifier" );
$identifier = $identifiers->item ( 0 )->textContent;
return str_replace ( "http://", "https://", $identifier );
}
Он находится в пространстве имен «ms-xrm», поэтому замените
$identifiers = $responsedom->getElementsbyTagName ( "Identifier" );
с
$identifiers = $responsedom->getElementsbyTagNameNS ( "ms-xrm","Identifier" );
и проверить. Далее нужно проверить в реальном WSDL, видите ли вы этот узел, если нет, то могут возникнуть проблемы с настройкой вашей CRM, поскольку этот узел доступен только при использовании ADFS.
Других решений пока нет …