Tja, en dan wil je een verbinding maken tussen een Personeelspakket en een ander systeem. En de leverancier ondersteunt echt alleen maar Windows. En ik zit te werken in PHP vanaf een Linux systeem. Hoe krijg ik nu de gegevens uit dat systeem via een SOAP aanroep? (keywords: PHP, SOAP, ProfitWeb, Afas). Je denkt dat je zoiets in de documentatie op kunt zoeken maar daar staan alleen maar Windows VB zaken in. Het wordt wel uitgelegd, min of meer, maar echt veel wijzer wordt je er niet van. Als je de supportafdelign belt is het antwoord: “wij ondersteunen alleen maar Windows”. Maar ze hebben een oplossing! Ik kan door een businesspartner terug gebeld worden want die geeft de eerste keer gratis 15 minuten ondersteuning! Prima, laat maar bellen. Als die belt is na een paar minuten het antwoord, je raad het al, “wij ondersteunen alleen maar Windows”. Natuurlijk verbaasd me dat niet omdat het hele Afas ecosysteem draait rond Windows en daar zijn ze ook heel, heel erg duidelijk in link. Weet je wat, ik geef me op voor hun cursus hoe je dit soort zaken moet bouwen, Wie weet leer ik dan meer. Oh ja, en ondertussen probeer ik het toch zelf even. Nou, na 12 uur zoek- en probeerwerk lukte het.
Kortom, voor alle arme zielen die ditnog ooit zouden willen doen hier het resultaat van 12 uur noeste arbeid:
# script to find the loginid of the manager of someones loginid
# version 1.0 date 20090903 author: ing. J. Baten
# must read article: http://www.ibm.com/developerworks/library/os-phpws/?ca=dgr-lnxw06PHP5soap
# Don’t you get it? Read the article!
ini_set(‘soap.wsdl_cache_enabled’, ‘0’);
ini_set(‘soap.wsdl_cache_ttl’, ‘0’);
# get the WSDL we need
$client = new SoapClient(“http://server/profitservices/getconnector.asmx?WSDL”, array(’trace’ => 1,’exceptions’ => 0 ));
# for debugging purposes: what functions does the soap interface support?
$functions = $client->__getFunctions();
print_r($functions);
$types = $client->__getTypes();
print_r($types);
#filter mag ook leeg zijn voor een lijst.
$filter=”
$GetDataParam = array(
‘environmentId’=> “bedrijf”,
‘userId’=>”gebruiker”,
‘password’=>”geheim”,
‘logonAs’=>””,
‘connectorId’=>”naam_connector”,
‘filtersXml’=>$filter);
# fire soap request and wait for response
$GetDataResponse = $client->GetData($GetDataParam);
echo “Request :”, $client->__getLastRequest(), “\n\n”;
echo “Response :”, $client->__getLastResponse(), “\n\n”;
# handle response
if (is_soap_fault($GetDataResponse)) {
trigger_error(“SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})”, E_USER_ERROR);
} else {
print_r($GetDataResponse);
}
?>;
Kortom, leuk spul!