login  Naam:   Wachtwoord: 
Registreer je!
 Forum

nusoap met wsdl werkt niet

Offline roy - 07/03/2010 14:22
Avatar van royPHP gevorderde beste allemaal,

Ik heb de volgende webservice gemaakt:
Server:

  1. <?php
  2. // Insert the NuSOAP code
  3. require_once('nusoap.php');
  4. // Create an instance of the server
  5. $server = new soap_server;
  6.  
  7. // Initialize WSDL support
  8. $server->configureWSDL('helloworldwsdl', 'urn:helloworldwsdl');
  9. // Put the WSDL schema types in the namespace with the tns prefix
  10. $server->wsdl->schemaTargetNamespace = 'urn:helloworldwsdl';
  11. // Register the data structures used by the service
  12. $server->wsdl->addComplexType(
  13. 'Person',
  14. 'complexType',
  15. 'struct',
  16. 'all',
  17. '',
  18. 'firstname' => array('name' => 'firstname',
  19. 'type' => 'xsd:string'),
  20. 'age' => array('name' => 'age', 'type' => 'xsd:int'),
  21. )
  22. );
  23. $server->wsdl->addComplexType(
  24. 'AgeConfirmReply',
  25. 'complexType',
  26. 'struct',
  27. 'all',
  28. '',
  29. 'output_string' => array('name' => 'output_string',
  30. 'type' => 'xsd:string'),
  31. 'allow' => array('name' => 'allow', 'type' => 'xsd:boolean')
  32. )
  33. );
  34. // Register the method to expose
  35. $server->register('hello', // method name
  36. array('person' => 'tns:Person'), // input parameters
  37. array('return' => 'tns:AgeConfirmReply'), // output parameters
  38. 'urn:helloworldwsdl', // namespace
  39. 'urn:helloworldwsdl#hello', // soapaction
  40. 'rpc', // style
  41. 'encoded', // use
  42. 'Confirm the enquirer is over 18' // documentation
  43. );
  44.  
  45. // This is the method
  46. function hello($input) {
  47. $output_string = 'Hello ' . $input['firstname'] .
  48. '. You are ' . $input['age'] . ' years old.';
  49.  
  50. if ( $input['age'] >= 18 ) { $allow = 1; }
  51.  
  52. return array(
  53. 'output_string' => $output_string,
  54. 'allow' => $allow
  55. );
  56. }
  57.  
  58. // This returns the result
  59. $server->service($HTTP_RAW_POST_DATA);
  60. ?>


Client:
  1. <?php
  2.  
  3. // Insert the NuSOAP code
  4. require_once('nusoap.php');
  5. // This is location of the remote service
  6. $client = new soapclient('http://www.domein.com/api/helloworld-server-wsdl.php?wsdl', true);
  7.  
  8.  
  9. // Check for any errors from the remote service
  10. $err = $client->getError();
  11. if ($err) {
  12. echo '<p><b>Error: ' . $err . '</b></p>';
  13. }
  14.  
  15. $person = array('firstname' => 'Fred', 'age' => 22);
  16. $result = $client->call('hello',array('message' => $person));
  17.  
  18. // Check for any faults reported by the remote service
  19. if ($client->fault) {
  20. echo '<p><b>Fault: ';
  21. print_r($result);
  22. echo '</b></p>';
  23. } else {
  24. // Check for any errors from the remote service
  25. $err = $client->getError();
  26. if ($err) {
  27. echo '<p><b>Error: ' . $err . '</b></p>';
  28. } else {
  29. // If everything is OK display the result
  30. print $result['output_string'] . ' ';
  31. if ( $result['allow'] == 1 ) {
  32. print "You may continue...";
  33. } else {
  34. print "You are too young!";
  35. }
  36. }
  37. }
  38.  
  39. // Display the request and response
  40. echo '<h2>Request</h2>';
  41.  
  42. $text = htmlspecialchars($client->request, ENT_QUOTES);
  43. $remove = array ("<"," x");
  44. $insert = array ("<br><","<br> x");
  45. $text = str_replace($remove, $insert, $text);
  46.  
  47. echo '<pre>' . $text . '</pre>';
  48. echo '<h2>Response</h2>';
  49.  
  50. $text = htmlspecialchars($client->response, ENT_QUOTES);
  51. $remove = array ("<"," x");
  52. $insert = array ("<br><","<br> x");
  53. $text = str_replace($remove, $insert, $text);
  54.  
  55. echo '<pre>' . $text . '</pre>';
  56.  
  57. // Display the debug messages
  58. echo '<h2>Debug</h2>';
  59. echo '<pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
  60. ?>



Al ik de client webpagina open, dan krijg ik de volgende error:
Error: wsdl error: XML error parsing WSDL from http://www.dome...l.php?wsdl on line 2: Reserved XML Name


Heeft iemand enig idee van wat hier fout gaat?


Grt,
Roy

2 antwoorden

Gesponsorde links
Offline Martijn - 07/03/2010 17:53
Avatar van Martijn Crew PHP je gebruikt een Reserved woord, dus een woord dat een betekenis heeft (zoals je in een query ook niet zomaar alle woorden kan gebruiken)

Verder kan ik je niet echt helpen
Offline roy - 07/03/2010 18:08 (laatste wijziging 21/03/2010 13:47)
Avatar van roy PHP gevorderde Hoe kan je het Request EN Response aan de webservice kant opvangen en wegschrijven?
dus de complete XML.

Het request opvangen doe je zo:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $HTTP_RAW_POST_DATA;
fwrite($fh, $stringData);
fclose($fh);


Hoe kan ik het response opvangen?


Of welke andere PHP-library/functie maakt het mogelijk dat ik een WSDL kan genereren?


Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s