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 :

ws php / C# client


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut ws php / C# client
    Bon les gars, je m'arrache les cheveux !! Je paie une bière virtuelle a celui qui trouve une explication...

    J'ai un webservice en php avec les lib nusoap, un webservice bidon :
    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
     
    <?php
     
    require_once('./nusoap/nusoap.php');
    $server = new soap_server;
     
    $NAMESPACE = 'http://www.nerilnet.com';
    $server->configureWSDL('webservice', $NAMESPACE);
    $server->wsdl->schemaTargetNamespace = $NAMESPACE;
    $server->register('Test', array(),  array('return'=>'xsd:string'),$NAMESPACE, $NAMESPACE+'test', 'rpc', 'literal');
     
    function Test() {
    		return "coucou";
    	}
     
    // Get our posted data if the service is being consumed
    // otherwise leave this data blank.                
    $POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) 
                    ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
     
    // pass our posted data (or nothing) to the soap service                    
    $server->service($POST_DATA);    
    ?>
    Bon, pas très compliqué comme webservice, on l'interroge, il me repond coucou...
    L'urL de ce ws est : http://www.nerilnet.com/webservice/ws_test.php
    (http://www.nerilnet.com/webservice/ws_test.php?wsdl pour acceder au WSDL)

    J'ai crée un client en java, pas de problème, il répond bien
    Je crée un client DOTNET, pas de problème de compile, mais lorsque je l'execute, quand je l'interroge, il me renvoi null
    Est ce que quelqu'un peut essayer de l'interroger avec un client C#?

    J'ai essayé de me connecter a ce webservice : http://www.scottnichol.com/samples/session.php?wsdl de la meme facon que je me suis connecté au mien, et no probleme, il répond bien

    Bref, AHHHHHHHHHHHHHHHHHHH Moi pas comprendre !!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Par défaut
    Tu utilises quelle version de php? Avec la version 5 de PHP tu a l'extension SOAP (faut juste l'activer).

    Ensuite, si tu veux un exemple de code, je peux te proposer ça :

    fichier myWebService.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
     
    class myWebService { 
     
        public final function getHello($nom){
     
            return 'Hello '.$nom;
        }
    }
    ?>
    fichier soap_server.php
    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
     
    <?php
     
    if (empty($_GET['action'])) {
    	die('SOAP server error');
    }
     
    ini_set('soap.wsdl_cache_enabled', FALSE);
    $server = new SoapServer('Webservices.wsdl');
     
    switch ($_GET['action']) {
    	case 'myWebService':
    		require_once($_GET['action'].'.class.php');
    		$server->setClass($_GET['action']);
    		break;
    	default :
    		die('SOAP server error');
    }
    $server->setPersistence(SOAP_PERSISTENCE_SESSION);
    $server->handle();
    ?>
    et enfin Webservices.wsdl

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 
    				xmlns:tns="urn:webservice" 
    				xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    				xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    				xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    				name="WebServices" 
    				targetNamespace="urn:webservice">
     
    	<message name="getHelloRequest">
    		<part name="nom" type="xsd:string"/>
    	</message>
    	<message name="getHelloResponse">
    		<part name="return" type="xsd:string"/>
    	</message>
     
    	<portType name="myWebServicePortType">
    		<operation name="getHello">
    			<input message="tns:getHelloRequest"/>
    			<output message="tns:getHelloResponse"/>
    		</operation>
    	</portType>
     
    	<binding name="myWebServiceBinding" type="tns:myWebServicePortType">
    		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    		<operation name="getHello">
    			<soap:operation soapAction="urn:myWebServiceAction"/>
    			<input>
    				<soap:body use="encoded" namespace="urn:xmethods" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</input>
    			<output>
    				<soap:body use="encoded" namespace="urn:xmethods" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</output>
    		</operation>
    	</binding>
     
    	<service name="Webservice">
    		<port name="myWebServicePort" binding="tns:myWebServiceBinding">
    			<soap:address location="http://localhost/soap_server.php?action=myWebService"/><!--Ici tu indiques où se trouve ton fichier soap_server.php-->
    		</port>
    	</service>
    </definitions>
    Mets ces trois fichier sur ton serveur php.

    Après au niveau de ton client C#, tu fais "add web reference" tu indique où se trouve ton fichier wsdl" et normalement ça marche

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    C'est malheuresement la version php4.4.2

Discussions similaires

  1. php amf client
    Par bernedef dans le forum Langage
    Réponses: 1
    Dernier message: 14/05/2009, 21h22
  2. [Web Service] Web service entre serveur php et client java.
    Par Spont dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/02/2009, 11h01
  3. [PHP-JS] GPRS et PHP relation client serveur
    Par philippe13 dans le forum Langage
    Réponses: 6
    Dernier message: 29/10/2006, 19h46

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