Nieuws

Webservices: NuSOAP en PHP
Geplaatst op woensdag 21 november 2007

Webservices worden tegenwoordig vaak gebruikt. Een webservice kan omschreven worden als een applicatiecomponent die toegankelijk is via standaard webprotocollen (SOAP & XML). Een webservice maakt het mogelijk om op afstand (meestal over het Internet) vanaf een client-computer een dienst op te vragen aan een server, bijvoorbeeld het maken van een berekening, het leveren van gegevens of het uitvoeren van een taak.
Om gebruik te maken van webservices via de programmeertaal PHP is een SOAP klasse (Simple Object Access Protocol) geschreven door Scott Nichol (NuSOAP). Op het internet zijn vele voorbeelden te vinden over de werking van de NuSOAP klasse en hoe je hiermee webservices kunt bouwen.

Ik was ook bezig om mijn eigen webservice te bouwen. Hiervoor gebruikte ik de voorbeelden van Scott Nichol. Maar op de een of andere manier lukte het mij niet om de webservices goed te laten functioneren, telkens kreeg ik de foutmelding:
Response not of type text/xml: text/html

Wat hier de oorzaak van was, kon ik op internet niet vinden. Maar het kwam erop neer dat de reactie die ik terug kreeg van de webservice geen XML maar HTML was. Hierdoor functioneerde mijn webservice niet goed. Nadat ik een e-mail naar Scott Nichol had gestuurd, kreeg ik een reactie, die misschien voor vele mensen ook wel handig kan zijn.

Wanneer je een webservice aanbiedt, die gebruik maakt van NuSOAP klasse staat aan de onderkant de volgende code:
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);


Deze code zorgt ervoor dat de gegevens die worden opgevraagd terug gestuurd worden, hier ging het bij mij fout.
Als je gebruik maakt van PHP versie 5.2.2, kan je deze code vervangen door:
$server->service(file_get_contents ('php://input'));

Dit verhielp bij mij het probleem, waardoor mijn webservice wel goed werkte, en de reactie die terug gestuurd werd wel uit XML bestond.

De webservice die ik gemaakt heb is te vinden op:
http://webservice.tvldesign.com/
De bijbehorende WSDL (Web Services Description Language) is te vinden op:
http://webservice.tvldesign.com/server.php?wsdl

Met deze webservice kan je een aantal dingen met betrekking tot sterrenbeelden en horoscopen opvragen, een aantal van deze functionaliteiten zijn.

  • Het sterrenbeeld van deze maand
  • De horoscoop van vandaag, voor het sterrenbeeld van deze maand
  • Het sterrenbeeld aan de hand van een geboortedatum
  • De horoscoop van vandaag, voor het sterrenbeeld aan de hand van een geboortedatum
  • De horoscoop van vandaag, voor een zelf in te voeren sterrenbeeld
  • En nog een aantal andere functionaliteiten, alles is te vinden op:
    http://webservice.tvldesign.com/server.php.