serious_joker
چهارشنبه 22 شهریور 1391, 12:12 عصر
سلام
کلا نمیشه از این soap server جواب گرفت. هر حالتی نوشتم موقع فراخوانی با soap client چه با زند و چه با SoapClient خطای زیر رو میده:
Fatal error: Uncaught SoapFault exception: [VersionMismatch] Wrong Version
اساسی درگیرشم و باید تا فردا تحویل بدم.
بنظرتون مشکل از کجاست
کد سمت سرور:
class Developers_ApiController extends Zend_Controller_Action {
public $parameters;
public $config;
public $session;
public $errors = array();
//change this to your WSDL URI!
private $_WSDL_URI;
public function init() {
$this -> config = Zend_Registry::get('config');
$this -> session = Zend_Registry::get('session');
$autoloader = new Zend_Application_Module_Autoloader( array('namespace' => 'Default', 'basePath' => dirname(dirname(__FILE__))));
$this -> _WSDL_URI = SITE_PATH . 'developers/api/soap';
$this->parameters = $this->_getAllParams();
$this->getHelper('viewRenderer')->setNoRender(true);
}
public function soapAction() {
header ("content-type: text/xml");
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setUri( sprintf($this->_WSDL_URI,0) );
$autodiscover->setClass('NAG_api' );
$autodiscover->handle();
exit;
}
public function restAction() {
$server = new Zend_Rest_Server();
$server -> setClass('NAG_api');
$server -> handle();
exit ;
}
}
کد سمت کلاینت (تست):
ini_set('soap.wsdl_cache_enabled', '0');
ini_set('soap.wsdl_cache_ttl', '0');
$soap_conf = array(
"trace" => 1,
'location' => 'http://example/developers/api/soap?wsdl',
'uri' => 'http://example/developers/api/soap',
"exceptions" => 1,
"soap_version" => SOAP_1_2,
'encoding' => 'UTF-8'
);
$client = new SoapClient(null,$soap_conf);
$params = array(
'username'=>'demo',
'password'=>'demo',
'to'=>'09123456789',
'from'=>'',
'message'=>'testتست',
'schedule' => FALSE
);
echo $client->__soapCall('SendMessage',$params);
[hr]
کلا نمی دونم جریان چیه! نمی دونم مشکل از ورژن soap سروره یا نه
ممکنه مثلا تو سرور ورژن 1.1 باشه و این زند از 1.2 استفاده کنه؟
کلا نمیشه از این soap server جواب گرفت. هر حالتی نوشتم موقع فراخوانی با soap client چه با زند و چه با SoapClient خطای زیر رو میده:
Fatal error: Uncaught SoapFault exception: [VersionMismatch] Wrong Version
اساسی درگیرشم و باید تا فردا تحویل بدم.
بنظرتون مشکل از کجاست
کد سمت سرور:
class Developers_ApiController extends Zend_Controller_Action {
public $parameters;
public $config;
public $session;
public $errors = array();
//change this to your WSDL URI!
private $_WSDL_URI;
public function init() {
$this -> config = Zend_Registry::get('config');
$this -> session = Zend_Registry::get('session');
$autoloader = new Zend_Application_Module_Autoloader( array('namespace' => 'Default', 'basePath' => dirname(dirname(__FILE__))));
$this -> _WSDL_URI = SITE_PATH . 'developers/api/soap';
$this->parameters = $this->_getAllParams();
$this->getHelper('viewRenderer')->setNoRender(true);
}
public function soapAction() {
header ("content-type: text/xml");
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setUri( sprintf($this->_WSDL_URI,0) );
$autodiscover->setClass('NAG_api' );
$autodiscover->handle();
exit;
}
public function restAction() {
$server = new Zend_Rest_Server();
$server -> setClass('NAG_api');
$server -> handle();
exit ;
}
}
کد سمت کلاینت (تست):
ini_set('soap.wsdl_cache_enabled', '0');
ini_set('soap.wsdl_cache_ttl', '0');
$soap_conf = array(
"trace" => 1,
'location' => 'http://example/developers/api/soap?wsdl',
'uri' => 'http://example/developers/api/soap',
"exceptions" => 1,
"soap_version" => SOAP_1_2,
'encoding' => 'UTF-8'
);
$client = new SoapClient(null,$soap_conf);
$params = array(
'username'=>'demo',
'password'=>'demo',
'to'=>'09123456789',
'from'=>'',
'message'=>'testتست',
'schedule' => FALSE
);
echo $client->__soapCall('SendMessage',$params);
[hr]
کلا نمی دونم جریان چیه! نمی دونم مشکل از ورژن soap سروره یا نه
ممکنه مثلا تو سرور ورژن 1.1 باشه و این زند از 1.2 استفاده کنه؟