Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
http://www.osteraker.fi/blog/?tag=zend-framework
Cela pourrait etre utile à certains
Hors ligne
Bonjour,
juste une remarque sur Autodiscover :
Zend_soap_Autodiscover est n'est pas tres bien faite de toute facon :
la methode set class cree un Zend_Uri avec en dur "http://$_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']"
pas terrible.
public function setClass($class, $namespace = '', $argv = null) { $uri = Zend_Uri::factory('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']); $wsdl = new Zend_Soap_Wsdl($class, $uri, $this->_extractComplexTypes); $port = $wsdl->addPortType($class . 'Port'); $binding = $wsdl->addBinding($class . 'Binding', 'tns:' .$class. 'Port'); $wsdl->addSoapBinding($binding, 'rpc'); $wsdl->addService($class . 'Service', $class . 'Port', 'tns:' . $class . 'Binding', $uri); foreach ($this->_reflection->reflectClass($class)->getMethods() as $method) { .....
si on veut faire de l'https par exemple.On se dit : "super je vais faire une classe héritant de Zend_Soap Auotodiscover facil et redefinir setClass avec https facile !"
Et bien non car la plupart des champs de Zend_soap_Server sont PRIVATE (ex: $this->_reflection) donc inaccessible depuis la classe fille :-(
du coup obliger de reecrire entierement sa propre classe.
J'aimerai bien que les pro de la POO m'explique cette tendance dans le framework a mettre les champs en private au lieu de protected.
(ok il y a un peu de frustration dans mon commentaire :-) )
Hors ligne
Mouais mais bon le patch fourni permet de palier au probleme du boostrap dans le WSDL.
Ce deja un point.
Maintenant j'ai un souci...
voici ma class webservice.php
<code>
<?
class includes_webservice{
/**
* dis bonjour !
*
* @param string $name
* @return string $name
*/
public function sayhello($monsieur){
return $monsieur;
}
}
?>
</code>
et mon controlleur :
<code>
function soapclientAction(){
$client = new SoapClient('http://***********/webservice/discover');
try{
echo $result = $client->sayhello('Tomtom');
var_dump($client);
var_dump($result);
}catch(SoapFault $e){
print_r($e);
}
$this->getHelper('layout')->disableLayout();
$this->getHelper('viewRenderer')->setNoRender();
}
function discoverAction(){
Zend_Loader::loadClass('Includes_WebService');
require_once 'Zend/Soap/AutoDiscover.php';
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setClass('includes_webservice', '', null, "http://********/webservice");
$autodiscover->handle();
$this->getHelper('layout')->disableLayout();
$this->getHelper('viewRenderer')->setNoRender();
}
function indexAction(){
try{
$server = new Zend_Soap_Server('http://*********/webservice/discover');
$server->setClass('includes_webservice');
$server->handle();
}catch(SoapFault $e){
print_r($e);
}
$this->getHelper('layout')->disableLayout();
$this->getHelper('viewRenderer')->setNoRender();
$this->render();
}
</code>
L'action SoapClient me renvoie ca :
NULL
Super non?
Une idée?
Dernière modification par thomasb (20-10-2008 16:43:32)
Hors ligne
Bonjour,
je ne sais pas si ca influe l'Autodiscover mais le nom de la variable dans le docType ne correspond pas au nom de la variable utilisée ($name et $monsieur)
pour le client meme chose que dans l'autre post :
$options = array('trace' => 1); $client = new SoapClient('http://***********/webservice/discover',$options); //appel de la methode ici //puis var_dump($Client ->__getLastRequestHeaders()); // header de la requete var_dump($Client ->__getLastRequest()); // xml de la requete var_dump($Client ->__getLastResponseHeaders()); // header hhtp de la reponse var_dump($Client ->__getLastResponse()); // xml de la reponse
pour voir ou ca plante
Hors ligne
Bon j'ai trouvé ... merci c t un petit souci de nomage de le xml.
J'ai une grande question en fait :
J'ai développé une plateforme en MVC ... avec des controleurs qui affiche des graph des valeurs etc....
Je pensais utilisé Zend_Soap pour pouvoir créer un services web a partir d'une class webservice qui serait dérivée d'une class zend_controlleur mais apparemment c'est impossible...
L'idée serait de récupérer tout mon environnement authentification, config, ACL, fonctions etc....
Des infos des idées?
Hors ligne
thomasb a écrit:
Bon j'ai trouvé ... merci c t un petit souci de nomage de le xml.
J'ai une grande question en fait :
J'ai développé une plateforme en MVC ... avec des controleurs qui affiche des graph des valeurs etc....
Je pensais utilisé Zend_Soap pour pouvoir créer un services web a partir d'une class webservice qui serait dérivée d'une class zend_controlleur mais apparemment c'est impossible...
L'idée serait de récupérer tout mon environnement authentification, config, ACL, fonctions etc....
Des infos des idées?
UP?
Hors ligne
Bonjour,
je suis désoler je ne comprends pas ta question.
Peux-tu expliquer davantage ce que tu veux faire (j'ai du mal le matin)
Hors ligne
En fait je voudrais que ma class qui décrit le webservice soit un vrai controller...
Je voudrais renvoyer des vues (en chaine) au client soap par exemple.
Est ce stupide?
Hors ligne
thomasb a écrit:
En fait je voudrais que ma class qui décrit le webservice soit un vrai controller...
Je voudrais renvoyer des vues (en chaine) au client soap par exemple.
Est ce stupide?
up again ...
La par contre je vois pas l'interet du Zend_Soap Server dans un modèle MVC si qq peut m'expliquer...
L'interet aurait été d'avoir ma class décrivant l'API en tant que controller héritant de Zend_Controller_Action... dans l'état actuel des choses j'ai juste une pauvre classe qui n'accède a aucun objet du framework...
Que dois je faire? Recoder mes fonctions dans l'API du webservice? et ce sans bénificier des composants du framework? Merci.
Hors ligne