Php, webservice et SOAP
Posté : 28 oct. 2008, 18:54
Bonjour,
Je suis nouveau sur ce forum en tant que participant même si j'ai souvent puisé des infos ici par le passé.
Voilà, j'ai développé un petit webservice qui me permet d'écrire dans une base de données, des données de benchmark, et de lire ladite base afin de faire des graphes.
J'ai déjà fait des clients en C# (qui sont des services windows) qui accèdent à ce webservice. Leur but est d'écrire dans la base de données et cela marche sans problème.
Par contre, j'essaie de faire un client en PHP afin de lire ma bdd (pour produire mes graphes), et là, je galère.
En fait, dans mon client, je commence par appeler une page php qui s'appelle CreateHeader.php, et qui sert à faire l'authentification NTLM. Le code est celui que l'on peut trouver sur le net (par ex ici http://www.phpcs.com/codes/NTLM-GET-LOG ... 5272.aspx).
j'ai ajouté toute fois ceci:
NOTA: cette page est aussi appelé par le serveur.
Cela semble bien marcher, car je récupère bien le bon domaine et le nom de l'utilisateur.
Là où ça se complique c'est ensuite, quand j'essaie de créer le client.
La création proprement dite se passe bien, mais dès que j'essaie de lancer une fonction, j'ai une erreur du type:
Si vous avez des pistes, je suis preneur.
Merci d'avance pour votre aide!
Je suis nouveau sur ce forum en tant que participant même si j'ai souvent puisé des infos ici par le passé.
Voilà, j'ai développé un petit webservice qui me permet d'écrire dans une base de données, des données de benchmark, et de lire ladite base afin de faire des graphes.
J'ai déjà fait des clients en C# (qui sont des services windows) qui accèdent à ce webservice. Leur but est d'écrire dans la base de données et cela marche sans problème.
Par contre, j'essaie de faire un client en PHP afin de lire ma bdd (pour produire mes graphes), et là, je galère.
En fait, dans mon client, je commence par appeler une page php qui s'appelle CreateHeader.php, et qui sert à faire l'authentification NTLM. Le code est celui que l'on peut trouver sur le net (par ex ici http://www.phpcs.com/codes/NTLM-GET-LOG ... 5272.aspx).
j'ai ajouté toute fois ceci:
if ( $login != NULL){
$IsLogIn = true;
if ( $_COOKIE['PSESSION'] )
session_id($_COOKIE['PSESSION']);
error_log("session_id:".session_id());
if(session_id()=="" )
{
error_log("------------ NEW SESSION ------------");
$res = session_start();
setcookie('PSESSION',session_id());
$_SESSION['login']=$login;
}
}
En fait, une fois que l'authentification NTLM est faite, je vérifie que j'ai bien un login et si c'est bon, je créer une session.NOTA: cette page est aussi appelé par le serveur.
Cela semble bien marcher, car je récupère bien le bon domaine et le nom de l'utilisateur.
Là où ça se complique c'est ensuite, quand j'essaie de créer le client.
La création proprement dite se passe bien, mais dès que j'essaie de lancer une fonction, j'ai une erreur du type:
Ci-dessous, le code de mon client:Message = SoapFault exception: [HTTP] Unauthorized in C:\Program Files\EasyPHP 2.0b1\www\clientP4.php:22 Stack trace: #0 [internal function]: SoapClient->__doRequest('__soapCall('login', Array) #2 {main}
<?php
require_once("CreateHeader.php"); //le code est comme celui du lien ci-dessus
?>
<?php
if($IsLogIn){
try {
echo "IsLogIn:".$IsLogIn."<br/>";
$client = new SoapClient('http://127.0.0.1/fichier.wsdl',
array(
'uri' => "http://127.0.0.1/Server.php",
'trace' => 1,
'soap_version' => SOAP_1_1
)
);
$obj = $client -> __soapCall('getP4Benchmark',array());
var_dump($obj);
echo "End ------";
}
catch(SoapFault $e){
printf("Message = %s\n",$e->__toString());
}
}
?>
Je ne peux pas tout mettre sur ce forum, mais de personne à personne, je pourrais vous envoyer mon code de façon plus complète.Si vous avez des pistes, je suis preneur.
Merci d'avance pour votre aide!