Mam utrworzony SOAP Server jako moduł do Kohany 3.2 korzystajacy z bibliotek soap Zenda:
/** * Soap service * * @param void * @return void */ public function action_service() { $this->set_protocol(); $this->set_xml_header(); // disable wsdl cache $wsdl = $this->protocol.$_SERVER['HTTP_HOST'].'/webservice/wsdl'; $server = new SoapServer($wsdl); $server->setClass('Model_Webservice'); $server->handle(); } /** * Soap wsdl * * @param void * @return void */ public function action_wsdl() { $this->set_protocol(); $this->set_xml_header(); // disable wsdl cache $wsdl = new Zend_Soap_AutoDiscover(); $wsdl->setUri($this->protocol.$_SERVER['HTTP_HOST'].'/webservice/service'); $wsdl->setClass('Model_Webservice'); $wsdl->handle(); }
W modelu "Model_Webservice" zdefiniowaną mam testową metodę:
public function test() { return (string) 'Hallo World'; }
Na localhoscie wszystko mi ladnie smiga, ale uruchamiajac ten WS na serwerze produkcyjnym co ktores wywolanie tej metody zwraca pusty Response. Testy przeprowadzalem na soap cliencie napisanym w .NET i SOA Client for Mozilla Firefox (w obydwu przypadkach to samo). Cachowanie wsdl wylaczone w php.ini. Ten "Pusty response" nie jest zadnym bledem - zwrot ogolny bramki to "200 OK", jednak w podgladzie Raw Response Body nie mam wtedy nic, zamiast:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://framework.zend.com"><SOAP-ENV:Body><ns1:testResponse><return>Hallo World</return></ns1:testResponseResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
Pomysly juz mi sie koncza co moze byc tego powodem...