【问题标题】:Connect php client to webservices Microsoft Dynamic 365将 php 客户端连接到 Web 服务 Microsoft Dynamic 365
【发布时间】:2019-06-27 12:18:36
【问题描述】:

我正在尝试使用 php 创建一个客户端以将数据发送到提供 Microsoft 动态 365 的 web 服务,我认为它需要身份验证但我无法加载 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-ERROR:解析 WSDL:无法从“https://buildpinfraaos.sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs?singleWsdl”加载:无法加载外部实体“https://buildpinfraaos.sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs?singleWsdl”

【问题讨论】:

    标签: php ntlm


    【解决方案1】:

    最终的解决方案是:

    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()));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2015-08-23
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多