Извините, но я не знаю, что вы используете для настройки службы SOAP .....
Если бы вы могли предоставить больше информации о вашей службе SOAP (возможно, Zend_Soap с тегом Zend Framework) и т. Д., Это было бы здорово.
Кроме того, в качестве быстрой альтернативы вы говорите, что смотрели WSDL на другом компьютере, возможно, попробуйте приложение в альтернативной среде, чтобы убедиться, что это не проблема среды.
Может быть простая проблема с вашим клиент-серверным кодом.
ОБНОВЛЕНИЕ: Хорошо, я понял, что пример, который я упомянул вчера, не был полностью реализован, поэтому я быстро взломал что-то вместе, чтобы вы могли попробовать проверить, работает ли он в вашей среде.
Код представляет собой смесь чего-то, что я нашел здесь (пример Zend_Soap_Server) и кое-что из другого вопроса SO здесь (пример базового теста службы SOAP) .
Я тестировал его на своем конце, используя ZF 1.11, и в приведенном мною примере используется путь к приложению по умолчанию, который вы получаете с новым проектом ZF (например, модели находятся в каталоге application / models, поэтому показанная модель возглавлял Application_Model_Classname).
Если это работает, вы можете настроить соответственно .... если это не работает, мы можем попробовать что-то еще.
Начните с создания нового контроллера SOAP и установите класс следующим образом:
<?php
class SoapController extends Zend_Controller_Action
{
public function init()
{
ini_set("soap.wsdl_cache_enabled", "0"); //disable WSDL caching
$this->_helper->layout()->disableLayout(); //disable the layout
$this->_helper->viewRenderer->setNoRender(); //disable the view
}
public function indexAction ()
{
if (isset($_GET['wsdl'])) {
//return the WSDL
$this->handleWSDL();
} else {
//handle SOAP request
$this->handleSOAP();
}
}
private function handleWSDL ()
{
$strategy = new Zend_Soap_Wsdl_Strategy_AnyType();
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setComplexTypeStrategy($strategy);
$autodiscover->setClass('Application_Model_SoapService');
$autodiscover->handle();
}
private function handleSOAP ()
{
$server = new Zend_Soap_Server(null,
array('uri' => "http://YOURDOMAIN/soap?wsdl"));
$server->setClass("Application_Model_SoapService");
$server->handle();
}
public function testAction()
{
$client = new Zend_Soap_Client("http://YOURDOMAIN/soap?wsdl");
try {
echo $client->testMethod('test');
} catch (Exception $e) {
echo $e;
}
}
}
В приведенном выше классе WSDL автоматически генерируется с использованием Zend_Soap_Autodiscover с файлом SoapService.php в файле application / models / SoapService.php, используемом в качестве шаблона. Обратите внимание, что комментарии DocBock над каждым методом в вашем целевом классе являются неотъемлемой частью этого процесса.
Затем создайте файл SoapService.php в папке моделей по умолчанию:
<?php
class Application_Model_SoapService
{
/**
* testMethod
*
* @param string $string
* @return string $testSuccess
*/
public function testMethod(string $string)
{
$testSuccess = 'Test successful, the message was: ' . $string;
return $testSuccess;
}
}
Если все работает так, как должно быть, вы можете посетить:
http://YOURDOMAIN/soap?wsdl
чтобы увидеть WSDL и посетить:
http://YOURDOMAIN/soap/test
для получения сообщения об успехе со строкой, указанной вами в запросе клиента в коде testAction () в классе SoapController, как часть сообщения.
Дайте мне знать, работает ли он или нет, и мы можем идти оттуда.
Я смогу еще раз посмотреть в понедельник.