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
Line 4: Line 4:
= Officially supported protocols=
= 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.
* '''REST''': the current REST Moodle server use POST paramters and XML. This server is not RESTfull.
* '''SOAP''': the current SOAP server is based on the Zend SOAP sever (itself based on the PHP SOAP sever). Zend publishes [http://framework.zend.com/manual/en/zend.soap.client.html a Zend SAOP client]. The current server implementation doesn't work with Java/.Net because we didn't generated [http://geekandpoke.typepad.com/geekandpoke/2009/11/service-calling-made-easy-part-1.html a fully describe WSDL] yet. If you are working on a Java/.Net client, follow or participate to the tracker issue MDL-20804
* '''SOAP''': the current SOAP server is based on the Zend SOAP sever (itself based on the PHP SOAP sever). Zend publishes [http://framework.zend.com/manual/en/zend.soap.client.html a Zend SAOP client]. The current server implementation doesn't work with Java/.Net because we didn't generated [http://geekandpoke.typepad.com/geekandpoke/2009/11/service-calling-made-easy-part-1.html 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 [http://framework.zend.com/manual/en/zend.xmlrpc.client.html a Zend XML-RPC client].
* '''XML-RPC''': the current XML-RPC server is based on Zend XML-RPC server. Zend also publishes [http://framework.zend.com/manual/en/zend.xmlrpc.client.html 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''.
* '''AMF''': the server is based on the Zend AMF server. The test client can be found in ''Settings blocks > Site Administration > Development > Web service test client > AMF Test client''.


= PHP client examples =
= PHP client examples =

Revision as of 07:32, 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.
  • 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 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. 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

The Moodle XML-RPC server extends Zend XML-RPC Server. It is recommended to have a look to the Zend XML-RPC client documentation

REST