SOAP client metóda hlási Forbidden
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- d_rc
- Člen | 1
Ahoj,
pokúšam sa rozbehať na staršom Nette (1.0.0) SOAP a nedarí sa mi zistiť prečo nevie server zavolať požadovanú metódu.
Všetko by malo fungovať, dokonca aj getFunctions požadovanú metódu ukazuje (to totiž čerpá z wsdl). Keď však zavolám klienta, ktorý by mal zavolať metódu getQuote() tak to spadne na „SoapFault – Forbidden“ ako by tú triedu s metódou getQuote() nevedel nájsť. Keď ju však skúsim mimo SOAP volať z renderServer1, tak ju nájde. Podľa Call Stacku je problém v metóde SoapClient->__doRequest() ktorá je volaná zo SoapClient->__call() ktorú volám ja z $client->getQuote().
Akýkoľvek hint mi pomôže, ďakujem.
Presenter, ktorý rendruje clienta i server:
<?php
class Soap_NecMkpPresenter extends Presenter {
public function renderServer1() {
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("test.wsdl");
$server->setClass("SoapMethods");
$server->handle();
$this->terminate();
}
public function renderClient1() {
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient("test.wsdl");
//var_dump($client->__getFunctions()); die();
print($client->getQuote("ibm"));
$this->terminate();
}
}
?>
Trieda s metódami pre SOAP:
<?php
class SoapMethods extends Object {
function SoapMethods() {
ini_set("soap.wsdl_cache_enabled", "0");
}
public function getQuote($symbol) {
return 1.23;
}
}
?>