Development:Creating a web service client: Difference between revisions
(New page: = Officially supported protocols= In this chapter we will talk about the different supported protocol. * '''REST''': the current REST Moodle server use POST paramters and XML. The server ...) |
|||
(23 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Moodle_2.0}} | |||
[[Image:Moodle web service function documentation.jpg|thumb]]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 [https://docs.moodle.org/en/How_to_get_a_security_key security keys] page. You'll find there your token and the web service documentation associated with this token. | |||
= Officially supported protocols= | = Officially supported protocols= | ||
* '''REST''': the | * '''REST''': the Moodle REST server uses POST for parameters and XML for returned values. This server is not RESTfull. | ||
* '''SOAP''': the | * '''SOAP''': the Moodle SOAP server is based on the Zend SOAP server (itself based on the PHP SOAP server). Zend publishes [http://framework.zend.com/manual/en/zend.soap.client.html a Zend SOAP 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 | * '''XML-RPC''': the Moodle 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 | * '''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 [http://framework.zend.com/manual/en/zend.xmlrpc.client.html Zend XML-RPC client documentation] | |||
<code php> | |||
include 'Zend/Loader/Autoloader.php'; | |||
Zend_Loader_Autoloader::autoload('Zend_Loader'); | |||
= | $function = "moodle_user_get_users_by_id"; | ||
// id of the users | |||
$params = array(array(2,4)); | |||
= | $serverurl = "http://{servername}/webservice/xmlrpc/server.php?wstoken=$token"; | ||
$client = new Zend_XmlRpc_Client($serverurl); | |||
// | print "<pre>"; | ||
$ | try { | ||
$data = $client->call($function, $params); | |||
$ | var_dump ($data); | ||
} catch (exception $exception) { | |||
var_dump ($exception); | |||
} | |||
print "</pre>"; | |||
</code> | </code> | ||
== | == SOAP == | ||
The Moodle SOAP server extends Zend 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]. | |||
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 [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> | ||
// | //get the profile data of Moodle User | ||
$serverurl = " | |||
$serverurl | include 'Zend/Loader/Autoloader.php'; | ||
Zend_Loader_Autoloader::autoload('Zend_Loader'); | |||
$params = array( | |||
'userids' => array(2,4), // the params to passed to the function | |||
'wsfunction' => 'moodle_user_get_users_by_id', // the function to be called | |||
'wstoken' => '8dc8f5ca046129706c0d85a56efcaddd' //token need to be passed in the url | |||
); | |||
//set web service url server | |||
$serverurl = "http://{servername}/webservice/rest/server.php"; | |||
$client = new Zend_Http_Client($serverurl); | |||
print "<pre>"; | |||
try { | |||
$client->setParameterPost($params); | |||
$response = $client->request('POST'); | |||
var_dump ($response); | |||
} catch (exception $exception) { | |||
var_dump ($exception); | |||
} | |||
print "</pre>"; | |||
</code> | </code> | ||
[[Category:Web Services]] |
Latest revision as of 14:42, 22 April 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
include 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::autoload('Zend_Loader');
$function = "moodle_user_get_users_by_id";
// id of the users
$params = array(array(2,4));
$serverurl = "http://{servername}/webservice/xmlrpc/server.php?wstoken=$token";
$client = new Zend_XmlRpc_Client($serverurl);
print "
";
try {
$data = $client->call($function, $params);
var_dump ($data);
} catch (exception $exception) {
var_dump ($exception);
}
print "
";
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.
//get the profile data of Moodle User
include 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::autoload('Zend_Loader');
$params = array(
'userids' => array(2,4), // the params to passed to the function
'wsfunction' => 'moodle_user_get_users_by_id', // the function to be called
'wstoken' => '8dc8f5ca046129706c0d85a56efcaddd' //token need to be passed in the url
);
//set web service url server
$serverurl = "http://{servername}/webservice/rest/server.php";
$client = new Zend_Http_Client($serverurl);
print "
";
try {
$client->setParameterPost($params);
$response = $client->request('POST');
var_dump ($response);
} catch (exception $exception) {
var_dump ($exception);
}
print "
";