Alternatief voor SOAP integration?

  • Onderwerp Auteur
  • Bezoeker
  • Bezoeker
02 mei 2015 09:19 #7501 door
Beste mensen,

een opdrachtgever van mij wil graag gebruik maken van een webservice. Het is de bedoeling dat via de Joomla-site een extern ledenregister kan worden geraadpleegd. SOAP lijkt me daarvoor uitermate geschikt, maar is nog niet compatible met Joomla 3 (heb dat getest; op joomla 2.5 installeert de plugin prima, op Joomla 3 niet).
Omdat er toch wel enige spoed bij deze opdracht, vraag ik me af of er alternatieven zijn voor SOAP. Is iemand daarmee bekend? Het gaat om de koppeling via een WSDL-bestand

Groet,

Ronald Schipper
Onderwerp is gesloten.
  • Onderwerp Auteur
  • Bezoeker
  • Bezoeker
02 mei 2015 09:19 #7502 door
Beantwoord door in topic Alternatief voor SOAP integration?
Ben zelf ook bezig met een SOAP integratie in Joomla. Heb het nog niet helemaal door kunnen testen omdat we wachten op de juiste rechten, maar denk dat dit een oplossing is:

Met de "Flexi Custom Code" module kan je php code gebruiken in een module. Hiermee include je een php bestand waar je de integratie in regelt. Hier een voorbeeldje.
Code:
<?php $client = new SoapClient('http://voorbeeld.nl/servicenaam.asmx?WSDL'); $result = $client->LedenRegister(array( 'Country' => 'NL', 'City' => 'Amsterdam' )); print_r($result); ?>

De result kan je dan vervolgens weer zo uitlezen:
Code:
$result->LedenRegister->Naam;



Bericht toegevoegd op 5 mei 2015 om 13:58
Vorige bericht was op 4 mei 2015 om 11:06


Hallo Ronald,

Ben je inmiddels al verder gekomen met de SOAP integratie?

Heb inmiddels een werkende integratie gemaakt en het geoptimaliseerd. Wie weet heb je hier wat aan.

Dit is de functie die de data laad in een variabele (array). Er zitten wat dingen in die je moet veranderen naar je eigen situatie. Ik moet bijvoorbeeld om resultaat uit te lezen opgeven welke environment, country en company het om gaat.
Code:
<?php /* * GetHours * Connects with the OSE SOAP server and returns the hours of a club into an array * * Parameters: * $wsdl (string) sets the url of the webservice * $environment (string) selects the environment from which to load the data from * $country (string) country where the company is located * * Returns: * $data (array) */ function getHours($wsdl, $environment, $country) { // Create a new Soap Client using the url of the webservice $client = new SoapClient($wsdl); // Fill the result array with data using the mGetHoursOfCompany function $data = $client->mGetHoursOfCompany(array( 'environment' => $environment, 'country' => $country )); // Return the data array return $data; }

Je kan vervolgens de functie als volgt aanroepen:
Code:
<?php // Get hours from test environment from company $result = getHours('http://url.nl/file.asmx?WSDL', 'example_environment', 'nl', '1'); ?>

Zo check je of de data ook echt in de variabele is geladen:
Code:
<?php print_r($result); ?>

Als dat resultaat oplevert dan kan je vervolgens door de array gaan loopen om de resultaten weer te geven.
Code:
<?php // Loop through the stdClass Object foreach ($result as $result_array => $mGetHoursOfCompany) { // Loop through the function result array foreach ($mGetHoursOfCompany as $types => $anyType) { // Loop through the anyType array foreach ($anyType as $soapVars => $soapVar) { echo "Field 1 " . $soapVar->field1 . "<br>"; echo "Field 2 " . $soapVar->field_array->field2 . "<br>"; echo "Field 3 " . $soapVar-> field_array->field3 . "<br>"; echo "Field 4 " . $soapVar-> field_array->field4 . "<br>"; echo "Field 5 " . $soapVar->field5 . "<br>"; echo "Field 6 " . $soapVar->field6 . "<br><br>"; } } } ?>
Onderwerp is gesloten.
Gemaakt door Kunena