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

From MoodleDocs
Revision as of 07:28, 18 January 2011 by jerome mouneyrac (talk | contribs)

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

Zend SOAP client

$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