IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Consommer service web php en .NET


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut Consommer service web php en .NET
    Bonsoir à vous tous,

    Tout d'abords je souhaite expliquer le contexte de mon projet ici. Étant étudiant en BTS Informatique de Gestion 2ième Année Option Développeur, j'ai pour but de réaliser plusieurs petits outils durant ma période de stage, tout ceci dans le but de récupérer des champs dans Active Directory (ex : nom,prénom,compteWindows,email,...) pour pouvoir permettre aux utilisateurs du domaine, d'utiliser les mêmes identifiants et mot de passe, que les sessions windows, pour se connecter sur tel ou tel portail pédagogique.

    J'ai fais un schéma pour comprendre un peu l'ensemble de mon projet.


    Pour ce qui est de l'appli1 tout est bon, je récupère les informations souhaitées (le fichier texte étant là pour récupérer les mots de passe, sachant que ce champs n'est pas récupérable directement dans AD et par la suite faire le lien avec les identifiants)

    Structure du fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    id1    pwd1
    id2    pwd2
    id3    pwd3
    ----------------------------------

    Sur l'hébergement externe j'ai simplement crée une DB ayant sensiblement la même structure que la base mySQL dans le domaine (juste pour des test simples).

    J'aborde maintenant l'appli2, le côté serveur du service web est fait, à travers une class 'connexion' (faite en php) j'ai bien l'accès à mes méthodes accesseurs à partir de l'appli en .NET.

    Un morceau de ma class 'connexion'
    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
     
    class connexion
    {
     
    	// Variables privées
    	private $serveur;
    	private $utilisateur;
    	private $password;
    	private $database;
    	private $resultat;
     
     
    	//Constructeur
    	public function __construct($serveur, $utilisateur, $password, $database)
    	{
    		$this->serveur = $serveur;
    		$this->utilisateur = $utilisateur;
    		$this->password = $password;
    		$this->database = $database;
     
    		mysql_connect($this->serveur,$this->utilisateur,$this->password);
    		mysql_select_db($this->database);
    		$query = "SELECT * FROM maTable WHERE id = '15'"; //Requête de test, pas de WHERE pour l'instant, on passe juste un id au hasard
    		$req = mysql_query($query);
    		$data = mysql_fetch_assoc($req);
    		$this->resultat = $data['nom'];
     
    	}
     
            //L'accesseur
    	public function getResultat()
    	{
    		return $this->resultat;
    	}
    En outre, j'ai un problème au niveau d'une de mes méthodes (un simple SELECT). En php tout vas bien, si je fais un echo de ma méthode, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $connexion->getResultat();
    Sur un navigateur, j'ai bien le nom de l'utilisateur ayant l'id passé en paramètre (ceci reste à faire).

    Voila l'objet de mon problème maintenant. Je passe par un WinForm pour travailler avec le service, je clique sur le bouton pour invoquer cette méthode à afficher dans une messageBox et la rien ne s'affiche. Tout étant entre 'Try Catch EndTry' pas d'exception levée. Juste un resultat = ""...

    Donc je ne trouve pas mon problème, peut-être est-ce l'encodage, mais je n'y crois pas trop car si je retourne juste une chaine comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->resultat = 'test';
    return $this->resultat;
    à partir de la méthode dans le winForm j'ai bien 'test' qui apparait à l'écran.

    Si quelqu'un veut bien m'éclairer sur ce sujet, je suis preneur car pas moyen de trouver ou ça bloque.

    Cordialement, Lope_

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut
    Bonjour à tous.

    Le problème est désormais résolu. Le problème ne vient de la classe php en elle même mais à l'utilisation des méthodes via le webservice. En effet, si l'on aurai consommé ce service avec du php cela aurai fonctionné car le php est capable de garder l'instance qui a été créée auparavant (avec un singleton bien évidement ).

    Donc en vb.net, il était possible que j'utilise le constructeur de ma classe php, mais impossible de garder l'instance de connexion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $connexion = New Connexion('localhost','root','','database');
    $connexion->setRequete('INSERT INTO maTable VALUES (...)');
    Ceci fonctionne en php, car l'on travaille toujours sur $connexion. En vb.net c'est différent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim maConnexion as New monService.monServiceClient
     
    maConnexion.__construct("localhost","root","","database")
    maConnexion.setRequete("INSERT INTO maTable VALUES (...)")
    Le problème se trouve ici, on se connecte bien à la bdd avec le constructeur, mais l'utilisation de la méthode setRequete() détruit la connexion précédemment créée c'est pour cela que la méthode ne me renvoyée rien sur un winForm alors que sur un navigateur j'avais bien le résultat souhaité.

    Cordialement, Lope_

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer et consommer un service web PHP en C#
    Par KibitO dans le forum Services Web
    Réponses: 5
    Dernier message: 21/07/2014, 16h40
  2. Réponses: 4
    Dernier message: 20/03/2010, 18h38
  3. Consommation service Web sous Vista
    Par sandre dans le forum C#
    Réponses: 14
    Dernier message: 16/03/2007, 19h11
  4. [AXIS] Consommer un service web PHP
    Par Nicoin dans le forum Services Web
    Réponses: 7
    Dernier message: 18/02/2006, 16h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo