Ik heb het volgende stukje code:


<?PHP
//require('../BusinessObject/User.php');
class UserService { 

  function getUser($symbol) { 
      //program code
  } 
}

$server = new SoapServer("http://127.0.0.1/WebService/user.wsdl"); 
$server->setClass("UserService");
$server->handle(); 

?>


Zodra ik require('../BusinessObject/User.php'); niet uitcommentaar doet het niet meer en krijg de volgende melding:

SoapFault exception: [Client] looks like we got no XML document....
Wat is de vraag?
[edit]Aha, ik zie je edit ;-)[/edit]
Mja, ik ben niet echt duidelijk...


Ik wil een webservice aanmaken voor het benaderen van mijn objecten.

In de functie getUser wil ik bijvoorbeeld het object User aanmaken, die in het bestand User.php staat.
Ik wil de klasse User dus includen/require, maar wanneer ik dat doe, dan werkt de service niet meer.
De User klasse is correct. Elk bestand dat ik wil include, dan werkt het al niet meer.
Jan Koehoorn schreef op 04.02.2007 20:32
Wat is de vraag?
[edit]Aha, ik zie je edit ;-)[/edit]


Hehe, ik was nog druk aan het typen toen het bericht opeens werd gesubmit :-)
Geen mensen hier met php SOAP/WebService ervaring? :'(
Na het includen van andere files doet je script het niet meer.

Hmm.. 'k zit dan te denken aan:
- In de includes worden code blokken/functies/classen {...} niet juist afgesloten, waardoor de overige code perongelijk binnen een andere functie en/of class valt.
- Functies/classes worden dubbele gedefinieerd
- Functies willen rommelen met de HEADER(), terwijl de includes (al an niet bewust) output naar het scherm sturen.

Controleer eens of zo iets van toepassing zou kunnen zijn..

Buiten dat om zou ik het zo niet weten, daarvoor heb ik te weinig informatie ):
Pholeron
1. Zou een parse error zijn
2. Zou een php error zijn
3. Zou een php warning zijn

Ik zou als eerste beginnen met je error reporting op 4095 te zetten en je display_errors op 1 etc, etc, etc want daar komt namelijk meestal heel veel uit!

Pholeron heeft wel een puntje (al dan niet bewust) met zn headers. Het zou kunnen dat er een Content-Type header verstuurd wordt door een required script (een niet xml oid header). Dus ga je script even na. Het is namelijk wel php-valid, maar je webservice kan die header misschien niet aan...

Even terzijde, het hele soap/webservice gedoe is zwaar overrated! Als je zelf iets maakt in soap vorm ben je sneller klaar en waarschijnlijk beter (sowieso specifieker).
@Pholeron: Ik kan eens kijken naar puntje 3... Ik heb weleens in het verleden meegemaakt dat een spatie aan het begin van een php document problemen opleverde, wanneer ik thuis ben zal ik dit even controleren (al ben ik bang dat dit niet het probleem is).


@Cervetti: Wanneer ik thuis zal ik even naar alle mogelijke errors kijken.
Heb je trouwens een alternatief voor SOAP/WebService? Wat ik nog ken is XML-RPC en JSON, beide erg verschillend.
Ik wil gewoon data kunnen aanroepen/versturen op een andere server (3-tier).
Heb je misschien een goed voorbeeld voor zoiets?
Alvast bedankt.

Reageren