Sommaire |
Un service web est un programme informatique permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués. Il s'agit donc d'un ensemble de fonctionnalités exposées sur internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, et de manière synchrone.
Pour pouvoir utiliser les web services Maarch, il faut :
Toutes les installations sont expliquées dans le Tutoriel sur les web services
Le catalogue des web services Maarch est accessible depuis l'addresse : http://127.0.0.1:80/maarch_entreprise/ws_server.php?WSDL si votre Maarch Entreprise est installé sur votre poste, sinon il va falloir personnaliser cette adresse. Le serveur demande un nom d'utilisateur et un mot de passe Maarch. Prenons par exemple bblier/maarch, ou tout utilisateur déclaré dans Maarch.
Par exemple, si Maarch Entreprise est installé dans le dossier « SAE » sur un serveur d'adresse ip « 192.168.1.45 » qui écoute sur le port « 8080 » ; L'adresse d'accès au catalogue devient : http://192.168.1.45:8080/SAE/maarch_entreprise/ws_server.php?WSDL
Pour vous connecter aux web services Maarch Entreprise, vous devez utiliser un login/mot de passe utilisateur de Maarch Entreprise.
Il existe par défaut dans l'installation de Maarch Entreprise des utilisateurs, comme Bernard Blier. Son login est « bblier » et son mot de passe est « maarch ».
Les exemples de clients de web services sont en PHP mais peuvent bien entendu être dans un autre langage de développement (JAVA, .NET, Python, ...).
<?php
require('SOAP/Client.php');
$proxy = array('user' => 'bblier', 'pass' => 'maarch', 'timeout' => '600');
$wsdl = new SOAP_WSDL('http://127.0.0.1/maarch_entreprise/ws_server.php?WSDL', $proxy, false);
$client = $wsdl->getProxy();
Exemple de client de web service permettant de visionner un document de la table « res_x » de Maarch Entreprise :
<?php
require('SOAP/Client.php');
$proxy = array('user' => 'bblier', 'pass' => 'maarch', 'timeout' => '600');
$wsdl = new SOAP_WSDL('http://127.0.0.1/maarch_entreprise/ws_server.php?WSDL', $proxy, false);
$client = $wsdl->getProxy();
$viewID = 450; //ID du document à afficher
$fileContentArray = array();
$fileContentArray = $client->viewResource( $viewID, 'res_x', 'adr_x', true);
if($fileContentArray->status == "ok") {
$fileContent = base64_decode($fileContentArray->file_content);
$Fnm = $fileContentArray->tmp_path.DIRECTORY_SEPARATOR.rand() ."_". md5($fileContent) .".". strtolower
($fileContentArray->ext);
$inF = fopen($Fnm, "w");
fwrite($inF, $fileContent);
fclose($inF);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: ".strtolower($fileContentArray->mime_type));
header("Content-Disposition: inline; filename=". basename('maarch.'.strtolower($fileContentArray->ext))
.";");
header("Content-Transfer-Encoding: binary");
readfile($Fnm);
exit();
}
Les web services Maarch Entreprise se déclarent dans les fichiers « ws.php ».
Il en existe plusieurs dans Maarch Entreprise :
$SOAP_dispatch_map['userGet'] = array(
'in' => array('user' => 'string'),
'out' => array('out' => '{urn:MySoapServer}users'),
'method' => "core#users::getWs"
);
$SOAP_typedef['users'] = array(
'user_id'=>'string',
'password'=>'string',
'firstname'=>'string',
'lastname'=>'string',
'phone'=>'string',
'mail'=>'string',
'loginmode'=>'string'
);
public function get($userId, $compWhere='', $canBeDisabled=false)
{
self::set_foolish_ids(array('user_id', 'docserver_location_id'));
self::set_specific_id('user_id');
$user = self::advanced_get($userId, USERS_TABLE, $compWhere);
if (isset($user)
&& ($user->__get('status') == 'OK'
|| $user->__get('status') == 'ABS')
) {
return $user;
} else {
return null;
}
}
Il est possible d'écrire ses propres web services dans Maarch Entreprise, pour cela vous devez :
Vous retrouvez alors votre web service dans le catalogue WSDL.
Pour en savoir plus : Tutoriel_sur_les_web_services.