Development:Creating a web service client: Difference between revisions
(→REST) |
No edit summary |
||
Line 54: | Line 54: | ||
== REST == | == REST == | ||
Look at the web service function documentation on your security keys page to know about the returned XML structure. | Look at the web service function documentation on your [https://docs.moodle.org/en/How_to_get_a_security_key security keys] page to know about the returned XML structure. | ||
<code php> | <code php> |
Revision as of 08:26, 18 January 2011
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 Moodle REST server uses POST for parameters and XML for returned values. This server is not RESTfull.
- SOAP: the Moodle SOAP server is based on the Zend SOAP server (itself based on the PHP SOAP server). Zend publishes a Zend SOAP 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 Moodle XML-RPC server is based on Zend XML-RPC server. Zend also publishes a Zend XML-RPC client.
- AMF: the Moodle AMF 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
In all these client examples we will create two groups calling the web service function moodle_group_create_groups.
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
//set two groups
$group = new stdClass();
$group->courseid = $course->id;
$group->name = 'group1';
$group->enrolmentkey = ;
$group->description = 'Group 1';
$group2 = new stdClass();
$group2->courseid = $course->id;
$group2->name = 'group2';
$group2->enrolmentkey = ;
$group2->description = 'Group 2';
//set web service parameters
$paramgroups = array($group, $group2);
$params = array('groups' => $paramgroups);
//set web service url server => token need to be passed in the url
$serverurl = $remotemoodleurl . "/webservice/xmlrpc/server.php" . '?wstoken=' . $token;
//create the xmlrpc client instance
require_once 'Zend/XmlRpc/Client.php';
$xmlrpcclient = new Zend_XmlRpc_Client($serverurl);
//make the web service call
$function = 'moodle_group_create_groups';
try {
$createdgroups = $client->call($function, $params);
} catch (Exception $e) {
var_dump($e);
}
SOAP
The Moodle SOAP server extends Zend SOAP Server. It is recommended to have a look to the Zend SOAP client documentation. Except the class name Zend_Soap_Client, the entire example code would be similar to XML-RPC.
REST
Look at the web service function documentation on your security keys page to know about the returned XML structure.
//set two groups
$group = new stdClass();
$group->courseid = $course->id;
$group->name = 'group1';
$group->enrolmentkey = ;
$group->description = 'Group 1';
$group2 = new stdClass();
$group2->courseid = $course->id;
$group2->name = 'group2';
$group2->enrolmentkey = ;
$group2->description = 'Group 2';
//set web service parameters
$paramgroups = array($group, $group2);
$params = array('groups' => $paramgroups);
//set web service url server => token need to be passed in the url
$serverurl = $remotemoodleurl . "/webservice/xmlrpc/server.php" . '?wstoken=' . $token;
//make the web service call
$function = 'moodle_group_create_groups';
//download_file_content is a Moodle core function that convert an array
//into expected POST structure declared in the web service function documentation
$result = download_file_content($serverurl . '&wsfunction=' . $functionname, null, $params);