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

Windows Communication Foundation .NET Discussion :

WCF Service (.NET) et PHP - type non supporté


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut WCF Service (.NET) et PHP - type non supporté
    Bonjour.

    Je suis actuellement en train de développer un web service en .NET c# avec le système WCF de Microsoft. Ce web service permet notamment de récupérer, en passant un code postal en paramètre, les villes correspondant à ce code postal.

    Ce web service devra être utilisé par tous les navigateurs possibles et interprété par tous les langages possibles. D'ou l'utilisation du fichier wsdl.

    Malheureusement, en PHP, je n'arrive pas à interpréter les informations récupérées..

    je donne les sources pour mieux comprendre :

    mon fichier 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="Service1" targetNamespace="http://tempuri.org/">
    <wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
    <xsd:import schemaLocation="http://localhost:8080/testCPAlogie?xsd=xsd0" namespace="http://tempuri.org/"/>
    <xsd:import schemaLocation="http://localhost:8080/testCPAlogie?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
    <xsd:import schemaLocation="http://localhost:8080/testCPAlogie?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
    </xsd:schema>
    </wsdl:types>
    <wsdl:message name="IService1_getVille_InputMessage">
    <wsdl:part name="parameters" element="tns:getVille"/>
    </wsdl:message>
    <wsdl:message name="IService1_getVille_OutputMessage">
    <wsdl:part name="parameters" element="tns:getVilleResponse"/>
    </wsdl:message>
    <wsdl:message name="IService1_cpVille_InputMessage">
    <wsdl:part name="parameters" element="tns:cpVille"/>
    </wsdl:message>
    <wsdl:message name="IService1_cpVille_OutputMessage">
    <wsdl:part name="parameters" element="tns:cpVilleResponse"/>
    </wsdl:message>
    <wsdl:portType name="IService1">
    <wsdl:operation name="getVille">
    <wsdl:input wsaw:Action="http://tempuri.org/IService1/getVille" message="tns:IService1_getVille_InputMessage"/>
    <wsdl:output wsaw:Action="http://tempuri.org/IService1/getVilleResponse" message="tns:IService1_getVille_OutputMessage"/>
    </wsdl:operation>
    <wsdl:operation name="cpVille">
    <wsdl:input wsaw:Action="http://tempuri.org/IService1/cpVille" message="tns:IService1_cpVille_InputMessage"/>
    <wsdl:output wsaw:Action="http://tempuri.org/IService1/cpVilleResponse" message="tns:IService1_cpVille_OutputMessage"/>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="BasicHttpBinding_IService1" type="tns:IService1">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getVille">
    <soap:operation soapAction="http://tempuri.org/IService1/getVille" style="document"/>
    <wsdl:input>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="cpVille">
    <soap:operation soapAction="http://tempuri.org/IService1/cpVille" style="document"/>
    <wsdl:input>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="Service1">
    <wsdl:port name="BasicHttpBinding_IService1" binding="tns:BasicHttpBinding_IService1">
    <soap:address location="http://localhost:8080/testCPAlogie"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    mon code 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
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
     
    if(isset($_POST['codePostal'])){
    	$client = new SoapClient("http://localhost:8080/testCPAlogie?wsdl");
    	$parameters = array("cp" => $_POST['codePostal']);
    	$result = $client->getVille($parameters);
     
    }
     
    ?>
     
    <html>
    <body>
    	<form method="post" action="CodePostal.php">
    	<p>Entrez ici le code postal : </p>
    	<input type="text" name="codePostal"/>
    	<input type="submit" value="Valider" />
    </form>
    <?php
    	if(isset($_POST['codePostal'])){
    	//foreach($result as $valeur){
    	//	echo $valeur,'<br />';
    	//} 
    	$res = (string) $result;
    	echo $res;
    }
    ?>
    </body>
    </html>
    ma méthode getVille :

    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
    public List<String> getVille(Int32 cp)
            {
                List<String> villes = new List<String>();
                string connectionString = "Data Source=localhost/PAE;User Id=demoiard;Password=alogie;";
                using (OracleConnection conn = new OracleConnection())
                {
                    conn.ConnectionString = connectionString;
                    conn.Open();
     
                    OracleCommand commande = conn.CreateCommand();
                    string sql;
                    sql = "SELECT commune FROM zone where C_POSTAL="+cp+"";
                    commande.CommandText = sql;
                    OracleDataReader reader = commande.ExecuteReader();
                    while (reader.Read())
                    {
                        String ville = null;
                        ville = Convert.ToString(reader["COMMUNE"]);
     
                        villes.Add(ville);
                    }
                    if (villes != null)
                    {
                        Console.WriteLine("yeah"); 
                    }
                    return villes.ToList();
                }
            }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    N'oublions pas qu'un fichier WSDL fait avec du WCF n'est pas un seul fichier contenant tout ce dont a besoin un client pour communiquer avec le serveur, mais séparé en plusieurs parties (si tu regardes dans le WSDL tu verras des links vers les métadonnées). Ce procédé de génération du fichier WSDL n'est pas compréhensible par pas mal d'applications tierces.
    Avec la version 4.5 de WCF tu peux accéder à tout le contenu du WSDL sans links internes en faisant ?singlewsdl au lieu de ?wsdl. J'espère que cela résoudra ton problème.
    Dernière modification par Invité ; 10/12/2012 à 12h01.

Discussions similaires

  1. WCF Service (.NET) et PHP - type non supporté
    Par C-Jay dans le forum Langage
    Réponses: 0
    Dernier message: 03/12/2012, 16h46
  2. Sous VB.Net/Crystal report, Types non-primitifs
    Par 19cmos83 dans le forum SDK
    Réponses: 0
    Dernier message: 10/12/2007, 17h44
  3. [VB.Net] cast du type 'DataRowview' en type 'Date' non valide
    Par badnane2 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/06/2006, 16h50
  4. [VB.NET] Type non défini quand j'appelle un Windows Form ?
    Par beegees dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2006, 12h12
  5. Réponses: 4
    Dernier message: 05/02/2006, 17h29

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