Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2011, 09h04   #1
Membre habitué
 
Étudiant
Inscription : janvier 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : janvier 2007
Messages : 123
Points : 116
Points : 116
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 !
mrjay42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h14   #2
Membre chevronné
 
Inscription : juin 2004
Messages : 747
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : juin 2004
Messages : 747
Points : 741
Points : 741
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é) :
Citation:
$client = new SoapClient("some.wsdl", array('proxy_host' => "localhost",
'proxy_port' => 8080,
'proxy_login' => "some_name",
'proxy_password' => "some_password"));
__________________
  • Mon blog PHP : http://blog.alterphp.com
  • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
pc.bertineau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h58   #3
Membre habitué
 
Étudiant
Inscription : janvier 2007
Messages : 123
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : janvier 2007
Messages : 123
Points : 116
Points : 116
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 :
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 :
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...
mrjay42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h25   #4
Membre confirmé
 
Patrick Barroca
Inscription : mai 2008
Messages : 178
Détails du profil
Informations personnelles :
Nom : Patrick Barroca

Informations forums :
Inscription : mai 2008
Messages : 178
Points : 204
Points : 204
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.
patbator est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h26.


 
 
 
 
Partenaires

Hébergement Web