Witam,
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
ini_set('soap.wsdl_cache_enabled', '0'); $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
ini_set('soap.wsdl_cache_enabled', '0'); $wsdl = new Zend_Soap_AutoDiscover();
$wsdl->setOperationBodyStyle(array('use' => 'literal','namespace' => 'http://framework.zend.com')); $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...