13. Februar 2013 16:24
Hallo,
ich möchte mit PHP via SOAP mittels Webservice (über Adapter HTTP) mit AX2012 kommunizeren.
Das Einrichten des Webservices und dessen Bereitstellung über den IIS klappt auch soweit.
Die dadurch bereitstehende WSDL-Datei, ermöglicht mir die Verbindung über PHP mittels SoapClient() zum Webservice.
Hier erstmal der PHP-Code:
- Code:
<?php
$arrOptions = array(
'soap_version' => SOAP_1_2,
'exceptions' => true,
'trace' => 1,
'cache_wsdl' => WSDL_CACHE_NONE
);
$strWSDl = 'http://ax2012-a.contoso.com:85/MicrosoftDynamicsAXAif60/SycAXCustomerServiceGroupHTTP/xppservice.svc?wsdl';
try {
$objClient = new SoapClient($strWSDl, $arrOptions);
echo '<h2>Vorhandene Funktionen:</h2>';
var_dump($objClient->__getFunctions());
echo '<h2>Aufruf Methode (getCreditLimit):</h2>';
try {
var_dump($objClient->__soapCall("getCreditLimit", array('AccountNum' => 1101)));
} catch (SoapFault $arrSOAPFault) {
echo ('<p style="color:red;">SOAP Fault: <b>'.$arrSOAPFault->faultcode.' '.$arrSOAPFault->faultstring.'</b></p>');
}
} catch (Exception $objError) {
echo '<b>'.$objError->getMessage().'</b>';
}
?>
Über die Funktion __getFunctions() ( siehe var_dump($objClient->__getFunctions()); ) erhalte ich auch eine Übersicht über die verfügbaren Funktionen die ich über den Webservice freigegeben habe (in dem Fall die Funktion getCreditLimit() die als Parameter den "AcountNum" benötigt):
array(1) {
[0]=>
string(106) "AXCustomerServiceGetCreditLimitResponse getCreditLimit(AXCustomerServiceGetCreditLimitRequest $parameters)"
}
Soweit so gut.
Nun möchte ich aber die Funktion getCreditLimit() aufrufen und das Ergebnis zurückbekommen.
- Code:
var_dump($objClient->__soapCall("getCreditLimit", array('AccountNum' => 1101)));
Nun erhalte ich aber folgenden Fehler:
HTTP UnauthorizedWobei "HTTP" der Fehlercode und "Unauthorized" der Fehlertext ist.
Ganz unklar ist mir die Fehlermeldung nicht, denn sonst könnte ja jeder von außerhalb auf die Daten zugreifen.
Allerdings hab ich nun sehr lange gegoogelt und rumprobiert, ich habe aber allerdings keine Ahnung wie die Authentifizierung aussehen soll!?
Wo muss die stattfinden, mit welchen Benutzeraccount und welche Parameter muss per SOAP übergeben um die Authentifizierung durchzuführen.
Ich finde leider keine Infos über den HTTP Webservice in AX2012 und auch keine Beispiele. Das ist ja prinzipiell keine PHP-Problem, mit anderen Sprachen (Websprachen) funktioniert das ja auch so.
Kann mir da jemand helfen, bzw. sagen was, wie, wo gemacht werden muss?
Vielen Dank