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

Zend Framework PHP Discussion :

[Zend_Soap_Client] Consommer un Web Service avec quelques paramètres un peu chiants


Sujet :

Zend Framework PHP

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 126
    Points : 177
    Points
    177
    Par défaut [Zend_Soap_Client] Consommer un Web Service avec quelques paramètres un peu chiants
    Bonjour à tous,

    Dans la cadre de mon travail je dois me connecter à un web service d'un de nos clients, pour envoyer des informations...

    Pour l'instant je ne dispose pas encore de l'url du web service en question, mais je voulais néanmoins préparer mon code.
    Hélas, comme souvent avec Zend, je butte très vite sur un obstacle infranchissable : il faut deviner ce qu'il faut coder...ou pire, lire le code du framework pour comprendre comment il fonctionne.
    En effet, je n'ai trouvé aucun tutos, aucun livre (j'ai celui de Julien Pauli) qui traitent de ma problématique.

    Voici mon problème :

    Je dois me connecter au web service, et apparemment il y aurait un login / password...c'est possible ça ?

    Le web service est sur le port 8080

    Donc ma question pourrait être la suivante :
    Comment se connecter à un web service qui nécessite une authentification et qui est sur le port 8080, le tout avec Zend Framework ?

    Question subsidiaire :
    Suis-je obligé d'utiliser SOAP, ou puis-je utiliser REST, indépendamment de la façon dont est codé le Web Service ?

    Je vous remercie par avance !

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Le composant Zend_Soap_Client utilise la librairie standard SoapClient. Ses paramètres mappent donc ceux de cette classe, à peu de choses près...

    Voir ici la doc officielle : http://www.php.net/manual/fr/class.soapclient.php

    Quant à ta question sur les login/mdp :

    Soit les champs login et mdp sont des éléments du message XML que tu envoies (ils font partie des champs demandés en entrée par la WSDL) :
    Attends de connaître la WSDL pour en savoir plus.

    Soit ce sont des paramètres pour passer le proxy (peu probable vu ton énoncé) :
    $client = new SoapClient("some.wsdl", array('proxy_host' => "localhost",
    'proxy_port' => 8080,
    'proxy_login' => "some_name",
    'proxy_password' => "some_password"));

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 126
    Points : 177
    Points
    177
    Par défaut
    Merci de ta réponse !

    Il me semble justement, que la gestion du port/login/password via les options de proxy ne sont pas cohérents dans mon cas !

    J'ai fouillé dans le code du Zend Framework, et j'ai trouvé ça dans la classe "Zend_Soap_Client" :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    public function setOptions($options)
        {
            if($options instanceof Zend_Config) {
                $options = $options->toArray();
            }
     
            foreach ($options as $key => $value) {
                switch ($key) {
                    case 'classmap':
                    case 'classMap':
                        $this->setClassmap($value);
                        break;
                    case 'encoding':
                        $this->setEncoding($value);
                        break;
                    case 'soapVersion':
                    case 'soap_version':
                        $this->setSoapVersion($value);
                        break;
                    case 'wsdl':
                        $this->setWsdl($value);
                        break;
                    case 'uri':
                        $this->setUri($value);
                        break;
                    case 'location':
                        $this->setLocation($value);
                        break;
                    case 'style':
                        $this->setStyle($value);
                        break;
                    case 'use':
                        $this->setEncodingMethod($value);
                        break;
                    case 'login':
                        $this->setHttpLogin($value);
                        break;
                    case 'password':
                        $this->setHttpPassword($value);
                        break;
                    case 'proxy_host':
                        $this->setProxyHost($value);
                        break;
                    case 'proxy_port':
                        $this->setProxyPort($value);
                        break;
                    case 'proxy_login':
                        $this->setProxyLogin($value);
                        break;
                    case 'proxy_password':
                        $this->setProxyPassword($value);
                        break;
                    case 'local_cert':
                        $this->setHttpsCertificate($value);
                        break;
                    case 'passphrase':
                        $this->setHttpsCertPassphrase($value);
                        break;
                    case 'compression':
                        $this->setCompressionOptions($value);
                        break;
                    case 'stream_context':
                        $this->setStreamContext($value);
                        break;
                    case 'features':
                        $this->setSoapFeatures($value);
                        break;
                    case 'cache_wsdl':
                        $this->setWsdlCache($value);
                        break;
                    case 'useragent':
                    case 'userAgent':
                    case 'user_agent':
                        $this->setUserAgent($value);
                        break;
     
                    // Not used now
                    // case 'connection_timeout':
                    //     $this->_connection_timeout = $value;
                    //    break;
     
                    default:
                        require_once 'Zend/Soap/Client/Exception.php';
                        throw new Zend_Soap_Client_Exception('Unknown SOAP client option');
                        break;
                }
            }
     
            return $this;
        }
    Cette méthode permet notamment ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    case 'login':
                        $this->setHttpLogin($value);
                        break;
                    case 'password':
                        $this->setHttpPassword($value);
    Donc on peut mettre un login/password pour de l'authent http
    Pour le port, j'ai trouvé la solution : on peut l'écrire directement dans l'url
    En fait, ma problématique n'est pas du tout de passer par un proxy...donc je bloquais sur ce que je trouvais en ligne qui me conseillaient la même chose que toi, pc.bertineau : paramétrer un proxy...


    Bref, je te remercie pour ta réponse !
    Et une fois de plus je peux dire que la doc de Zend est plus qu'insuffisante, puisque la seule façon de s'en sortir c'est d'aller lire le code du Framework...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    Bon franchement, je te trouve un peu dur sur la qualité de la doc.

    http://framework.zend.com/manual/fr/...ap.client.html

    Déjà pas besoin d'aller dans le code pour savoir qu'on peut passer en option un login et un mot de passe pour une auth Http.

    Maintenant, si tu n'as pas encore de WSDL, je ne crois pas que tu puisses aller très loin dans la préparation de ton code.

    Chaque webservice est spécifique, SOAP n'établit que le moyen de communication et ne présume pas du fonctionnement du webservice.

Discussions similaires

  1. Appel d'un web service avec des paramètres
    Par pussyycat dans le forum Services Web
    Réponses: 3
    Dernier message: 04/07/2012, 15h38
  2. Consommer un web service avec JavaScript
    Par Med_Hamma dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/06/2012, 15h44
  3. [Axis] Exposer, Consommer un web services avec Eclipse
    Par kululu dans le forum Services Web
    Réponses: 0
    Dernier message: 28/04/2011, 15h28
  4. Réponses: 5
    Dernier message: 21/01/2011, 09h27
  5. [Web Service] Consommer un web service avec PHP
    Par tonton93 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 29/10/2008, 15h28

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