2014-01-20 3 views
0

У меня есть простой PHP-скрипт с вызовами SOAP для моего CRM Online. Я могу создавать и извлекать записи, но у меня возникают проблемы с настройкой клиента объектов. Один из моих вызовов SOAP как таковой; он создает запись, но не устанавливает клиента.SOAP-запрос от php до CRMOnline

 $liveIDManager = new LiveIDManager(); 

    $securityData = $liveIDManager->authenticateWithLiveID($organizationServiceURL, $liveIDUseranme, $liveIDPassword); 

    if($securityData!=null && isset($securityData)){ 
     //echo ("\nKey Identifier:" . $securityData->getKeyIdentifier()); 
     //echo ("\nSecurity Token 1:" . $securityData->getSecurityToken0()); 
     //echo ("\nSecurity Token 2:" . $securityData->getSecurityToken1()); 
    }else{ 
     echo "Unable to authenticate LiveId."; 
     return; 
    } 
    echo "\n"; 
      $domainname = substr($CRMURL,8,-1); 
    $pos = strpos($domainname, "/"); 
    $domainname = substr($domainname,0,$pos); 
    print_r($data); 
    $contactRequest = EntityUtils::getCreateCRMSoapHeader($CRMURL, $securityData). 
    <s:Body> 
       <Create xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services"> 
       <entity xmlns:b="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
        <b:Attributes xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"> 
         <b:KeyValuePairOfstringanyType> 
          <c:key>firstname</c:key> 
          <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">'.$data['Account']['name'].'</c:value> 
          <c:key>parentcustomerid</c:key> 
          <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">'.$data['Account']['id'].'</c:value> 
         </b:KeyValuePairOfstringanyType> 
        </b:Attributes> 
        <b:EntityState i:nil="true"/> 
        <b:FormattedValues xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/> 
        <b:Id>00000000-0000-0000-0000-000000000000</b:Id> 
        <b:LogicalName>contact</b:LogicalName> 
        <b:RelatedEntities xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/> 
       </entity> 
       </Create> 
      </s:Body> 
    $response = LiveIDManager::GetSOAPResponse("/Organization.svc", $domainname, $CRMURL, $accountsRequest); 
    echo $response; 
    $createResult =""; 
    if($response!=null && $response!=""){ 
     preg_match('/<CreateResult>(.*)<\/CreateResult>/', $response, $matches); 

     $createResult = $matches[1]; 
    } 

Прошел ли кто-нибудь через это и/или знал, что мне не хватает?

Спасибо, Brad

ответ

0

Если бы изменить тип значения к EnitityReference среди других вещей; обновленный кусок моего SOAP ниже. <b:KeyValuePairOfstringanyType> <c:key>firstname</c:key> <c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">'.$data['Account']['name'].'</c:value> </b:KeyValuePairOfstringanyType> <b:KeyValuePairOfstringanyType> <c:key>parentcustomerid</c:key> <c:value i:type="b:EntityReference"> <b:Id>'.$data['Account']['category'].'</b:Id> <b:LogicalName>account</b:LogicalName> <b:Name i:nil="true" /> </c:value> </b:KeyValuePairOfstringanyType>

Просим прощения за форматирование ...