我正在尝试使用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错误:解析WSDL:无法从“ https://buildpinfraaos.sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs?singleWsdl”加载:无法加载外部实体“ https:// buildpinfraaos。sandbox.ax.dynamics.com/soap/services/FesLedgerJournalWs? singleWsdl“
答案 0 :(得分:0)
最终的解决方案是:
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()));
}