Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Creating a web service client: Difference between revisions

From MoodleDocs
No edit summary
Line 12: Line 12:


== SOAP ==
== SOAP ==
[http://framework.zend.com/manual/en/zend.soap.client.html Zend SOAP client]
The Moodle SOAP server extends Zend SOAP Server (that extend PHP SOAP server). It is recommended to have a look to the [http://framework.zend.com/manual/en/zend.soap.client.html Zend SOAP client documentation].


<code php>
<code php>

Revision as of 07:29, 18 January 2011

Moodle 2.0


You need to have already setup a web service. You can get help from How to enable web services for ordinary users or How to enable web services for an external system . Then have a look to your security keys page. You'll find there your token and the web service documentation associated with this token.

Officially supported protocols

  • REST: the current REST Moodle server use POST paramters and XML. This server is not RESTfull. A client would be really easy to implement once you know how the XML is structured. Have a look to the Moodle default test client, the XML is displayed.
  • SOAP: the current SOAP server is based on the Zend SOAP sever (itself based on the PHP SOAP sever). Zend publishes a Zend SAOP client. The current server implementation doesn't work with Java/.Net because we didn't generated a fully describe WSDL yet. If you are working on a Java/.Net client, follow or participate to the tracker issue MDL-20804
  • XML-RPC: the current XML-RPC server is based on Zend XML-RPC server. Zend also publishes a Zend XML-RPC client.
  • AMF: the server is based on the Zend AMF server. The server has been tested with simple web service function and primary type. The test client can be found in Settings blocks > Site Administration > Development > Web service test client > AMF Test client.

PHP client examples

SOAP

The Moodle SOAP server extends Zend SOAP Server (that extend PHP SOAP server). It is recommended to have a look to the Zend SOAP client documentation.

$function = 'the_function_name'; //see the web service documentation

   $params = array('search' => $search, 'downloadable' => $downloadable,
       'enrollable' => !$downloadable, 'options' => $options);
   $serverurl = $huburl . "/local/hub/webservice/webservices.php";
   require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
   $xmlrpcclient = new webservice_xmlrpc_client($serverurl, $token);
   try {
       $result = $xmlrpcclient->call($function, $params);
       $courses = $result['courses'];
       $coursetotal = $result['coursetotal'];
   } catch (Exception $e) {
       $errormessage = $OUTPUT->notification(
                       get_string('errorcourselisting', 'block_community', $e->getMessage()));
   }

XML-RPC

Zend XML-RPC client

REST