Подключите php-клиент к веб-сервисам Microsoft Dynamic 365 - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь создать клиент с php для отправки данных на веб-сервис, который предоставляет Microsoft dynamic 365, я думаю, что это требует аутентификации, но я не могу загрузить wsdl

Я использую класс SoapClient,есть кто-то, кто использовал этот класс для этого общения

define ('URL', 'https://buildpinfraaos.sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs?singleWsdl');

error_reporting(E_ALL ^ E_NOTICE);
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);



$opts = array( 'http' => array( 'user_agent' => 'PHPSoapClient' ) );
$soapClientOptions = array(
        'stream_context' => $context,
        'cache_wsdl' => WSDL_CACHE_NONE,
      //  'login' => ' wsuser@Pinfra.onmicrosoft.com', 'password' => 'Mun75565'
    );

   $datos =  array(); 
   try { 
        $client = new SoapClient(URL, $soapClientOptions ); 

        $resultado = $client->__getFunctions();
        //highlight_string($client->__getLastRequest());

       // $resultado = $client->FesCreateLedgerJournal(); 
         var_dump($resultado); 
    } catch (SoapFault $exception) {  
        echo "Error: ",$exception->getMessage()."<br>";
        /* 
        var_dump($client->__getLastRequest())."<br>";
        var_dump($client->__getLastResponse())."<br>";*/
    } 

Я понимаю, что должен получить XML и отправить XML, но когдапри отправке я отправляю эту ошибку:

Ошибка: SOAP-ОШИБКА: синтаксический анализ WSDL: не удалось загрузить из 'https://buildpinfraaos.sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs?singleWsdl': не удалось загрузить внешнюю сущность "https: // buildpinfraaos. sandbox.ax.dynamics.com / мыло / услуги / FesLedgerJournalWs? singleWsdl "

1 Ответ

0 голосов
/ 12 июля 2019

Окончательное решение:

require_once "lib/nusoap.php";


    $rul = 'https://xxxxxxxxx.sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs?singleWsdl';  
    $innerNS = 'http://schemas.microsoft.com/dynamics/2013/01/datacontracts'; 

    $access_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkN0ZlFDOExlLThOc0M3b0MyelFrWnBjcmZPYyIsImtpZCI6IkN0ZlFDOExlLThOc0M3b0MyelFrWnBjcmZPYyJ9.eyJhdWQiOiJodHRwczovL2J1aWxkcGluZnJhYW9zLnNhbmRib3guYXguZHluYW1pY3MuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNjMwYzc2ZDAtNDZkNS00NTFkLThlZjUtZGZjNDQzYTM0YjFiLyIsImlhdCI6MTU2Mjc2NDk4NiwibmJmIjoxNTYyNzY0OTg2LCJleHAiOjE1NjI3Njg4ODYsImFpbyI6IjQyWmdZQ2hiOUc1ck9lK3lRdCtTNzNhQkJ2b1dBQT09IiwiYXBwaWQiOiJmYmEyNDM4MC03MjhjLTRlZWItYjQxNi0zMTU0ZWQ2NTAyZTYiLCJhcHBpZGFjciI6IjEiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC82MzBjNzZkMC00NmQ1LTQ1MWQtOGVmNS1kZmM0NDNhMzRiMWIvIiwib2lkIjoiMjI2ZmMzYTktMTViZC00YzU4LWI0YWUtNDU2MWEyZjU3MGFkIiwic3ViIjoiMjI2ZmMzYTktMTViZC00YzU4LWI0YWUtNDU2MWEyZjU3MGFkIiwidGlkIjoiNjMwYzc2ZDAtNDZkNS00NTFkLThlZjUtZGZjNDQzYTM0YjFiIiwidXRpIjoiR2pwMU04NGFMRS1ib0x2S3dtMGNBQSIsInZlciI6IjEuMCJ9.LQEyyGcidp_NiaLJ_2HUWAtNAvs8eX8fbf2s6FoSKJb_43rarqrL8JdZEgF1jk20_3q-Ky4cKK8V2MbajMCGISYA4Bpn9dQbuN4e4ymeIt-deEIPMdoZdFRXapkPfwz2TDONY7rxzCWKHZE0CtfmGZmoA7k0xeGfjuhtxCiwgsNYGtZGirwYaAEYSHffXV9XFhOuIpAi7lTjnVrukM4wsufgX0upAhIGiZ3goX8UbRiUwG85ULpqIt5fGVabnLU3ytnQma93v0kyfZ0NX6yCNuLznX5Xjjui_i7WKfFbM3XA85tix8iQv8w8HJVzIZNsEQdvrNqd10GoYAjDpbjdww';
    $httpHeaders = array(
    'http' => array(
        'protocol_version' => 1.1,  
        'header' => "Authorization:Bearer " . $access_token . "\r\n",
    ));
    // form a stream context
    $context = stream_context_create($httpHeaders);
    // pass it in an array
    $params = array('stream_context' => $context);

try{
    $soap = new SoapClient($rul, $params);  
    //$soap->addPatientWs("tok", "1243");


    $auth = new stdClass();
    $auth->Company = 'DAT';
    $auth->Language = 'es-mx';
    $auth->MessageId = 'BCE4B0A7-C794-4FBA-A403-E1ECB0C1B968';
    $auth->PartitionKey = 'Initial';

    $header = new SoapHeader($innerNS , 'CallContext', $auth, false);

    $soap->__setSoapHeaders($header); 

    $param = array ('FesCreateLedgerJournal' => array("xmlFileStr" => "?"));

    $result = $soap->__soapCall("FesCreateLedgerJournal",   $param);


      var_dump($result); 

}catch(SoapFault $e){
    echo "Error-Exception:".$e->getMessage()."\n\n";
    var_dump( $soap->__getLastRequestHeaders());
    var_dump( htmlspecialchars($soap->__getLastRequest()));
}
...