Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Autres composants
Autres composants Forum de support sur les autres composants de Zend Framework.
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 19/07/2011, 22h31   #1
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Par défaut Problème web services

Bonsoir à tous,
Je poste trés rarement mais cette fois ci je ne parviens pas à solutionner mon problème.

Je crée un web service en utilisant zend_soap_server, quand j accède à l'url pour le wsdl tout semble correcte le xml s affiche bien.

Puis je tente de consommer ce web service avec zend_soap_client, et le problème survient quand je tente d accéder a l action qui consomme ce ws.

L erreur est la suivante :
Citation:
SoapFault: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://srce/ws/index/?wsdl' : Premature end of data in tag html line 1
Le code est :
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
<?php
class WsController extends Zend_Controller_Action
{
** *public function indexAction() {
** * * *if (is_null($this->getRequest()->getParam('wsdl'))) {
** * * * * *// Traitement de la requête
** * * * * *$server = new Zend_Soap_Server('http://srce/ws/index/?wsdl', array('soap_version' => SOAP_1_2,
** * * * * * * * * * * * * * * * * * * * * *'encoding' => 'UTF-8', 'compression' => SOAP_COMPRESSION_ACCEPT));
** * * * * *$server->setClass('Default_Services_Users');
** * * * * *$server->handle();
** * * *} else {
** * * * * *// Retour de la WSDL
** * * * * *$wsdl = new Zend_Soap_AutoDiscover();
** * * * * *$wsdl->setClass('Default_Services_Users');
** * * * * *$wsdl->setUri('http://srce/ws/index/?wsdl', array('soap_version' => SOAP_1_2,*
** * * * * * * * * * * * * *'encoding' => 'UTF-8', 'compression' => SOAP_COMPRESSION_ACCEPT));
** * * * * *$wsdl->handle();
** * * *}
** * * *exit;
** *}
** *
** *public function clientAction() {
*
** * * *// Appel du WebService
** * * *try {
** * * * * *$client = new Zend_Soap_Client('http://srce/ws/index/?wsdl');
** * * * * *$client->setOptions(array('soap_version' => SOAP_1_2,*
** * * * * * * * * * * * * * * * * * * *'encoding' => 'UTF-8', 'compression' => SOAP_COMPRESSION_ACCEPT));
** * * * * *$result = $client->add(1, 2);
** * * *} catch(Zend_Exception $e) {
** * * * * *Zend_Debug::dump($e->getMessage());
** * * *}
*
** * * *Zend_Debug::dump($result);exit();
** *}
*
** *
}
?>
Comme vous pouvez le voir c est en local.
L environnement est :
PHP : 5.3+
OS: ubuntu 10.04 LTS ou debian squeeze ( je test les deux)
Php-soap installé

En ce qui concerne les ws le client et serveur son sur la même application.

Je vous prie de m excuser j ecris à partir de mon télephone.

Seriez vous d où cela pourrait venir?

Je vous remercie
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 15h47   #2
Membre régulier
 
Avatar de Alcide_
 
Homme
Étudiant
Inscription : juin 2008
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 70
Points : 78
Points : 78
Je ne me suis jamais vraiment servi de Zend_Soap, donc ce que je vais dire n'est peut-être pas très pertinent...
Quelque remarques qui ne changeront sûrement rien à ton problème:
- Tu pourrais peut-être remplacer:
Code :
1
2
3
Zend_Soap_Server('http://srce/ws/index/?wsdl',$tesOptions);
/*par*/
Zend_Soap_Server(null,$tesOptions);
vu que l'url est la même que celle de l'action appelée.
- Sinon, pour voir si le paramètre "wsdl" existe :
Code :
if($this->getRequest()->has('wsdl')){/*code*/}
Ça t'éviterait d'utiliser "is_null" tout en étant sûr d'avoir un boolean en retour.

Pourrais-tu fournir le code de la méthode "add()" de ta classe "Default_Services_Users" ?
Si il y a un problème il est probable que ce soit de ce coté là...
Alcide_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 16h03   #3
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Aucuun problème possible au niveau de ma classe "Default_Services_Users" c'est simplement un truc de base et j'ai juste mis une fonction qui prend deux paramètres et les retourne.
De plus les commentaires sont nécessaires et ils sont bien mis en place, donc impossible que ça vienne de là.

Je n'ai jamais utilisé
Citation:
$this->getRequest()->has('wsdl');
Mais cela ne change rien au fait de passer ou non au bon endroit j'avais essayer avec getParam()

Et j'ai déjà essayé de remplacer l'url par null mais le résultat est le même
5h4rk 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 04h31.


 
 
 
 
Partenaires

Hébergement Web