Bonjour à tous j'ai développé un Webservice assez simple en PHP.
Le client envoie 3 données au service qui analyse celles-ci, va lire sa BDD et renvoie au client une réponse 1 ou 0 en fonction des données que celui-ci lui avait envoyé précédement. SOAP me permet donc de faire une bête fonction POST.

Mais bon voilà j'ai dévelloppé tout ceci pour me familiariser avec SOAP. Je souhaiterai garder mon programme côté serveur en PHP mais par contre je souhaiterai transformer mon programme client PHP en code C pour Linux.

Voici le code de mon serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
    include('../lib/nusoap.php');
 
    $serveur = new soap_server;
    $serveur->debug_flag=false;
    $serveur->register('CA');
 
    // FONCTION DE CONTROLE D'ACCES
    function CA($num_site, $num_term, $num_carte)
    {
        // CONNEXION AU SERVEUR SQL
        require("connect_bdd.php");
 
        // SELECTION D'UNE BASE
        $db_selected = mysql_select_db('ca', $link);
        if (!$db_selected)
        {
           die('Impossible de sélectionner la base de données : ' . mysql_error());
        }
 
        // REQUETE PERMETTANT DE COMPTER LE NOMBRE D'ENTREE CORRESPONDANT A LA COMBINAISON
        $requete = mysql_query("SELECT COUNT(num_carte) AS nb FROM autorisation WHERE
            num_site='$num_site' AND num_term='$num_term' AND num_carte='$num_carte'");
 
        if (!$requete)
        {
        die('Requête invalide : ' . mysql_error());
        }
 
        // RECUPERATION DU RESULTAT DE LA REQUETE
        $resultat = mysql_result($requete,0);
 
        // DEDUCTION DU DROIT D'ACCES EN FONCTION DU RESULTAT        
        if ($resultat==0)
        {
           $droit=0;
        }
        else
        {
           $droit=1;
        }
 
        // RETOURNE LE DROIT
        return "La <b>carte $num_carte</b> tente de badger sur le <b> terminal $num_term</b> du 
            <b>site $num_site</b>. <br><br> <b>Son droit d'accès est $droit</b>.";
 
        // FERME LE SERVEUR
        mysql_close($link);
    }
 
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA : '';
 
    // ENVOI LE RETOUR DE LA FONCTION AU CLIENT
    $serveur->service($HTTP_RAW_POST_DATA);
?>
Et voici le code de mon client que je souhaite transformer en un client SOAP en C :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
    include('../lib/nusoap.php');
 
    $client = new soapclient('http://127.0.0.1/Webservice_soap/CA/service_CA.php');
    $err = $client->getError();
 
    if ($err)
    {
        echo '<h2>Erreur de construction</h2><pre>' . $err . '</pre>';
    }
    else
    {
        // ENREGISTREMENT DES PARAMETRES
        $parametres = array('site'=>$_GET['num_site'],'terminal'=>$_GET['num_term'],'num_carte'=>$_GET['num_carte']);
        // APPEL LA FONCTION DU SERVEUR AVEC LES PARAMETRES 
        $recup = $client->call('CA', $parametres);
        // AFFICHE LE RESULTAT PROVENANT DU SERVEUR
        print $recup;
    }
?>
Voilà, donc mon client se contente d'envoyer 3 variables au service ($_GET['num_site'], $_GET['num_term'] et $_GET['num_carte']). Ici les données proviennent d'un formulaire, c'était pour faire un test, mais imaginons pour faire le prog en C que les 3 valeurs des 3 variables sont inscrites en dur dans le code.

Si quelqu'un peut m'aider à déveleppoer se client SOAP en C pour linux ca serait super cool.